如何使用另一个存储过程中的值?

Rog*_*oid 12 sql parameters stored-procedures return-value sql-server-2008

我在存储过程中有以下声明:

DECLARE @Count INT
EXEC @Count = GetItemCount 123
SELECT @Count
Run Code Online (Sandbox Code Playgroud)

其中使用以下语句调用另一个存储过程:

SELECT COUNT(Item) FROM tblItem WHERE ID = @ID
Run Code Online (Sandbox Code Playgroud)

但是,当我测试呼叫时,EXEC正确输出值,但未正确分配给@Count变量.我见过这样的例子或存储过程,包括这里,但没有一个参数和使用的返回值(我可以找到).ID参数被传递到第二个语句,该语句返回第一个StoredProcedure使用的计数值 - 我读过的所有信息似乎表明这应该有效 - 但即使GetItemCount,@ Count值也不会为零.始终返回正确的值.

如果有帮助,这是在Microsoft SQL Server 2008中.

Mat*_*ott 29

在您的存储过程中,您是否

a)将计数值分配给输出参数:

CREATE PROCEDURE GetItemCount
  @id INT,
  @count INT OUTPUT
AS
  SELECT @count = COUNT(Item) FROM tblItem WHERE ID = @id
Run Code Online (Sandbox Code Playgroud)

称为:

DECLARE @count INT
EXEC GetItemCount 123, @count OUTPUT
Run Code Online (Sandbox Code Playgroud)

或者,b)将计数值指定为返回值:

CREATE PROCEDURE GetItemCount
  @id INT
AS
BEGIN
  DECLARE @count INT
  SELECT @count = COUNT(Item) FROM tblItem WHERE ID = @id

  RETURN @count
END  
Run Code Online (Sandbox Code Playgroud)

称为:

DECLARE @count INT
EXEC @count = GetItemCount 123
Run Code Online (Sandbox Code Playgroud)


Mad*_*nan 5

其它的办法

DECLARE @Count table(counting INT)
Insert into @Count
EXEC GetItemCount 123 
SELECT Counting FROM @Count 
Run Code Online (Sandbox Code Playgroud)