SQL Server存储过程存储返回值

Phi*_*hil 9 sql sql-server stored-procedures sql-server-2005 sql-server-2008

直升机,

我的问题是我在SQL Server中有一个存储过程,它返回一个字段的计数.我想将此存储过程的结果存储在不同存储过程的变量(标量?)中.

sp_My_Other_SP:

CREATE PROCEDURE [dbo].sp_My_Other_SP
@variable int OUTPUT -- The returned count
AS

BEGIN -- SP

SET NOCOUNT ON;

SET @SQL = "SELECT COUNT(*) FROM blah"
EXEC(@SQL)

END -- SP
Run Code Online (Sandbox Code Playgroud)

我目前这样做:

DECLARE @count int

EXEC sp_My_Other_SP @count OUTPUT
Run Code Online (Sandbox Code Playgroud)

然后我就像使用它一样

IF (@count > 0)
BEGIN
...
END
Run Code Online (Sandbox Code Playgroud)

然而,它返回其他存储过程结果以及主要存储过程结果,这是我的.NET应用程序中的问题.

-----------
NoColName
-----------
14

-----------
MyCol
-----------
abc
cde
efg
Run Code Online (Sandbox Code Playgroud)

(上面是对返回的结果集的尝试表示)

我想知道是否有办法将存储过程的结果存储到一个不输出它的变量中.

谢谢你的帮助.

Ada*_*hes 13

您可以将存储过程的结果捕获到临时表中,以便调用存储过程不会返回它.

create table #temp (id int, val varchar(100))
insert into #temp
exec sp_My_Other_SP @value, @value, @value, @count OUTPUT
Run Code Online (Sandbox Code Playgroud)

  • 我使用这种方法但不是哈希表,而是使用TABLE标量类型,如:DECLARE @temp_tbl TABLE(value int)INSERT INTO @temp_tbl EXEC sp_My_SP SET @count =(SELECT TOP 1 value FROM @temp_tbl) (2认同)