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)
其它的办法
DECLARE @Count table(counting INT)
Insert into @Count
EXEC GetItemCount 123
SELECT Counting FROM @Count
Run Code Online (Sandbox Code Playgroud)