sql server2005 中的疑惑,急急急,邹大哥有空指教一下

jinxuliang 2007-07-25 11:53:38
sql2000+iis6
如下语句:
select a.* from aaa as a left join bbb as b on a.carid=b.carid where a.id=1
order by a.carid
用如下方式取数据
var tt=Record("carid")
Response.Write(Record("carid"))
执行没有问题.可以获得值
------------------------------------
------------------------------------
sql2005+iis6
select * from aaa as a left join bbb as b on a.carid=b.carid where a.id=1
order by a.carid
//在sql2005中使用查询分析,能够成功执行
用上面的方式取数
var tt=Record("carid");
Response.Write(Record("carid"))
不能获得值.
错误提示为:microsoft ole db provider for odbc drivers错误'80020009'
行句柄引用了一个已被删除的行或被标识为删除的行
------------------------------------
------------------------------------
sql2005+iis6
将上面语句改为
select * from aaa as a left join bbb as b on a.carid=b.carid where a.id=1
用下面的方式取数,可以正确获得数据
var tt=Record("carid");
Response.Write(Record("carid"))
------------------------------------
------------------------------------
请问这是怎么回事,如何解决?
...全文
196 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
昵称被占用了 2007-07-25
  • 打赏
  • 举报
回复
至于有时不出错

是因为a.carid,b.carid 正好完全相等,而ado没有很好的检测错误造成的
jinxuliang 2007-07-25
  • 打赏
  • 举报
回复
但是改为如下的方式依然是同样的错误提示
select a.* from aaa as a left join bbb as b on a.carid=b.carid where a.id=1
order by a.carid
昵称被占用了 2007-07-25
  • 打赏
  • 举报
回复
本来用*就是个不好的习惯

多表连接用*应该更不可取

改改习惯吧
昵称被占用了 2007-07-25
  • 打赏
  • 举报
回复
select * from aaa as a left join bbb as b on a.carid=b.carid where a.id=1
order by a.carid
返回的记录集有两个不同的carid列
jinxuliang 2007-07-25
  • 打赏
  • 举报
回复
补充说明:
  如果连结的时候,如果aaa表的carid在bbb表中对应全部存在,那么没有提示的错误!否则必定会出现.但是在查询分析器中执行又没有错误.
jinxuliang 2007-07-25
  • 打赏
  • 举报
回复
问题解决:
  指定打开记录集时,游标的类型为三即可

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧