这个问题的标题有点误导,但我无法总结这一点。
我有两个存储过程。第一个存储过程(s_proc1
)调用第二个存储过程(s_proc2
)。我想将s_proc2
返回的值分配给s_proc1
中的变量。目前,我正在以这种方式呼叫s_proc2
(在s_proc1
内):
EXEC s_proc2 @SiteID, @count = @PagingCount OUTPUT
s_proc2
包含动态查询语句(原因我不在此概述)。
CREATE dbo.s_proc2
(
@siteID int,
@count int OUTPUT
)
AS
DECLARE @sSQL nvarchar(100)
DECLARE @xCount int
SELECT @sSQL = 'SELECT COUNT(ID) FROM Authors'
EXEC sp_ExecuteSQL @sSQL, N'@xCount int output', @xCount output
SET @count = @xCount
RETURN @count
这会导致@PagingCount
的值为@count
吗?我问,因为我从s_proc1
获得的结果是不可思议的。事实上,我得到的是两个结果。第一个是@count
,然后是s_proc1
的结果(这是不正确的)。所以,它让我想知道@PagingCount
是否设置不正确。
谢谢。
答案 0 :(得分:3)
试试这个
SELECT @sSQL = 'SELECT @xCount = COUNT(ID) FROM Authors'
EXEC sp_ExecuteSQL @sSQL, N'@xCount int output', @count = @xCount output
答案 1 :(得分:1)
要获得您需要的返回值
DECLARE @RC int
EXEC @RC = s_proc2 @SiteID, @count = @PagingCount OUTPUT
您的动态SQL也应该
'SELECT @xCount = COUNT(ID) FROM Authors'
我看不到@xCount被分配到任何地方。