Установите возвращаемое значение SP для переменной в SQL Server - PullRequest
13 голосов
/ 17 октября 2008

У меня есть sproc, который возвращает одну строку и столбец с текстом, мне нужно установить этот текст в переменную, что-то вроде:

declare @bla varchar(100)
select @bla = sp_Name 9999, 99989999, 'A', 'S', null

но, конечно, этот код не работает ...

спасибо!

Ответы [ 3 ]

29 голосов
/ 17 октября 2008

Если вы не можете изменить хранимую процедуру, другим решением будет определить временную таблицу и вставить результаты в эту

DECLARE @Output VARCHAR(100)

CREATE TABLE #tmpTable
(
    OutputValue VARCHAR(100)
)
INSERT INTO #tmpTable (OutputValue)
EXEC dbo.sp_name 9999, 99989999, 'A', 'S', null

SELECT
    @Output = OutputValue
FROM 
    #tmpTable

DROP TABLE #tmpTable
19 голосов
/ 17 октября 2008

Если хранимая процедура возвращает единственное значение, вы можете определить один из параметров хранимой процедуры как переменную OUTPUT, а затем хранимая процедура установит значение параметра

CREATE PROCEDURE dbo.sp_Name
    @In INT,
    @Out VARCHAR(100) OUTPUT

AS
BEGIN
    SELECT @Out = 'Test'
END
GO

И затем вы получите выходное значение следующим образом

DECLARE @OUT VARCHAR(100)
EXEC sp_name 1, @Out OUTPUT
PRINT @Out
15 голосов
/ 17 октября 2008
DECLARE
  @out INT

EXEC @out = sp_name 'param', 2, ...

Дополнительная информация в T-SQL "EXECUTE" help (Справка из MSSQL 2008, но также работает и в 2000)

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