finereport报表,使用带参数的sql存储过程,报没有返回数据集的错


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

解决方法:修改存储过程,在begin 后面添加 SET NOCOUNT ON。

不管多复杂的sql存储过程 只需要在第一个大的begin后面添加 如下:

set @sql='7731E86A-6613-470D-3726-08D84A19C12D,EE4E6F43-2763-4F9D-35E9-08D84A19C12D,9DFD9E61-A807-4975-3688-08D84A19C12D';
set @sql2='A6D3385B-';
declare @s varchar(4000);
declare @s2 varchar(4000);
set @sql=@sql+',';
while charindex(',',@sql)>0
begin SET NOCOUNT ON
  select @s=substring(@sql,1,charindex(',',@sql)-1)
  select @sql=substring(@sql,charindex(',',@sql)+1,len(@sql))
  INSERT @TA VALUES(@s);
  SELECT 1
end