2010-05-21 2 views
2

Название этого вопроса немного вводит в заблуждение, но я не мог точно рассказать об этом.Присвоить результаты хранимой процедуры в переменную в другой хранимой процедуре

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

спасибо.

ответ

3

попробовать этот

SELECT @sSQL = 'SELECT @xCount = COUNT(ID) FROM Authors' 
EXEC sp_ExecuteSQL @sSQL, N'@xCount int output', @count = @xCount output 
+0

Это приводит к ошибке Параметризованный запроса '(@xCount INT выход) ВЫБОР @xCount = COUNT (i.id) ОТ Авторы' ожидает, что параметр '@xCount', который не поставляется. – RHPT

+0

Nevermind. Я понял. Спасибо вам и Мартину. – RHPT

1

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

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

Кроме того, если ваш динамический SQL быть

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

Я не могу видеть @xCount быть назначены в любом месте.