Назначьте результаты хранимой процедуры в переменную другой хранимой процедуры - PullRequest
2 голосов
/ 22 мая 2010

Название этого вопроса немного вводит в заблуждение, но я не мог обобщить это очень хорошо.

У меня есть две хранимые процедуры. Первая хранимая процедура (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.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 22 мая 2010

попробуйте

SELECT @sSQL = 'SELECT @xCount = COUNT(ID) FROM Authors' 
EXEC sp_ExecuteSQL @sSQL, N'@xCount int output', @count = @xCount output
1 голос
/ 22 мая 2010

Чтобы получить возвращаемое значение, вам нужно будет сделать

DECLARE @RC int
EXEC  @RC = s_proc2 @SiteID, @count = @PagingCount OUTPUT

Также, если ваш динамический SQL будет

'SELECT @xCount = COUNT(ID) FROM Authors'

Я не вижу @xCount, назначенного где-либо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...