Задайте возвращаемое значение SP переменной в SQL Server

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

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

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

спасибо!

Ответы

Ответ 1

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

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

Ответ 2

Если хранимая процедура возвращает одно значение, вы можете определить один из параметров хранимой процедуры как переменную 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

Ответ 3

DECLARE
  @out INT

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

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