请问ResultSet与left join使用的问题,为何会抛错?SQLServerException: 无法从已删除行获取值

louiechong 2009-12-05 02:23:01
SQL:

select Employees.Eid,Employees.Ename,Employees.Eimage,Assessment.Astatus from Employees full join Assessment on Assessment.Aid=Employees.Eid where Employees.Edepartment=1

如果Assessment无数据,Astatus将会显示NULL

这句SQL是能查询出结果的

可用ResultSet装载数据集的时候会出异常:com.microsoft.sqlserver.jdbc.SQLServerException: 无法从已删除行获取值。


是否ResultSet有什么设定对left join不支持?
...全文
231 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChinaJiaBing 2009-12-06
  • 打赏
  • 举报
回复

左连接查询出为空可以isnull函数,改一下值;
或者改为内连接
dawugui 2009-12-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 louiechong 的回复:]
SQL:

select Employees.Eid,Employees.Ename,Employees.Eimage,Assessment.Astatus from Employees full join Assessment on Assessment.Aid=Employees.Eid where Employees.Edepartment=1

如果Assessment无数据,Astatus将会显示NULL

这句SQL是能查询出结果的

可用ResultSet装载数据集的时候会出异常:com.microsoft.sqlserver.jdbc.SQLServerException: 无法从已删除行获取值。


是否ResultSet有什么设定对left join不支持?
[/Quote]

你这是SQL中的FULL JOIN?
--小F-- 2009-12-05
  • 打赏
  • 举报
回复
你是不是用的2000升级到2005或者2008的语句
那样的话原来2008的驱动会关注到存储过程执行过程中返回的“影响多少行”这些信息,有这些信息存在,就会抛出以上异常:

解决办法:
在sql语句前加“SET NOCOUNT ON ”,表示不返回计数(表示受 Transact-SQL 语句影响的行数)
  • 打赏
  • 举报
回复
你这用的是full join?
select Employees.Eid,Employees.Ename,Employees.Eimage,Assessment.Astatus from Employees full join Assessment on Assessment.Aid=Employees.Eid where Employees.Edepartment=1

22,294

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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