sql server2005 中的疑惑,急急急,邹大哥有空指教一下
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 "))
------------------------------------
------------------------------------
请问这是怎么回事,如何解决?
------解决方案--------------------select * from aaa as a left join bbb as b on a.carid=b.carid where a.id=1
order by a.carid
返回的记录集有两个不同的carid列
------解决方案--------------------本来用*就是个不好的习惯
多表连接用*应该更不可取
改改习惯吧
------解决方案--------------------至于有时不出错
是因为a.carid,b.carid 正好完全相等,而ado没有很好的检测错误造成的