从另一个存储过程调用的SQL Server存储过程返回命令已成功完成但没有结果集

时间:2013-04-12 18:58:02

标签: sql-server

我有两个存储过程;我正在调用另一个存储过程。

我从第一个存储过程返回一个表。当我单独执行第一个时,我正确地得到了表。

但是当我从另一个存储过程调用第一个存储过程时,它总是返回命令已成功完成且没有结果。

我在存储过程2中这样称呼它:

set @query = 'exec servername.dbo.storedproc1 @ClassName = ''' + 
             @ClassName +''', @StatusName = ''' + @StatusName 
exec(@query) 

2 个答案:

答案 0 :(得分:0)

在外部过程中,创建一个临时表,该表具有与内部过程返回的结果集类似的模式。 调用内部过程时,请使用insert..exec,如下所示:

insert #tempTable exec InnerProcedure

然后从临时表中选择数据。

答案 1 :(得分:0)

首先创建一个临时表,捕获从执行第一个过程获得的数据。然后使用Select语句从临时表中检索所需的数据。不要忘记使用select语句后删除临时表,否则下次执行程序时会抛出错误表示表已经存在。另一方面,您可以使用表变量来避免删除表,因为表变量的范围仅限于包含存储过程的生命周期。 `

Insert into @temptable
Exec sprcdre1

Select * from  @temptable