调用SqlServer存储过程报没有返回数据集错误

编辑
文档创建者:文档助手1 (67727 )     浏览次数:5542次     编辑次数:6次     最近更新:susie 于 2016-09-21     

目录:

1. 问题描述编辑

在SqlServer数据库中,若定义的存储过程中包含有insert/update等更新操作时,在设计器中对存储过程进行调用时,会提示没有返回数据集的错误,如下图所示:

而在数据库端执行存储过程,能够查询出结果如下:

2. 解决方案编辑

在存储过程中增加SET NOCOUNT ON(不返回受影响行数),让数据库端不将影响的行数返回给客户端或者在模板数据集>数据库查询调用存储过程并设置SET NOCOUNT ON
下面我们以一个具体的示例看下如何设置。

3. 示例编辑

如已经存在了带有insert/update的一个简单的存储过程,如下:

create PROCEDURE [dbo].[prc_stuff]     AS     BEGIN        INSERT INTO dbo.雇员(雇员id,姓氏) values(10,'薛')       SELECT * from dbo.雇员where 姓氏= '薛'     END  

3.1 通过修改存储过程

此时修改存储过程,在BEGIN开始时加上SET NOCOUNT ON,如下:

ALTER PROCEDURE [dbo].[prc_stuff]     AS     BEGIN        SET NOCOUNT ON      INSERT INTO dbo.雇员(雇员id,姓氏) values(10,'薛')        SELECT * from dbo.雇员where 姓氏= '薛'     END   

3.2 通过在数据库查询处调用存储过程

若存储过程已经定义好,不希望再修改,这时可以通过模板数据集>数据库查询处调用存储过程,并在调用前增加SET NOCOUNT ON,最后执行的语句为:

SET NOCOUNT ON   EXEC dbo.prc_stuff   

注:Oracle数据库中不存在这样的问题,只要成功创建一个存储过程,在设计器中正常调用即可,不会出现类似的问题。


附件列表


主题: 设计思路
如果您认为本文档还有待完善,请编辑

文档内容仅供参考,如果你需要获取更多帮助,请咨询帆软技术支持
关于技术问题,您还可以通过帆软论坛获取帮助,论坛上有非常多的大神,有些水平比帆软工程师还要高哦。
若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

此页面有帮助吗?