SET табличная переменная из exec для хранимой процедуры в SQL Server 2008 - PullRequest
0 голосов
/ 01 февраля 2012

Я не верю, что это возможно, но хочу подтвердить, что вы не можете установить переменную таблицы из результатов выполнения хранимой процедуры в SQL Server 2008.

Я пытался сделать следующее:

DECLARE @Results TABLE (RESULT_ID INT);

INSERT INTO @Results (RESULT_ID) VALUES (1);

SET @Results = 
EXEC dbo.[spResultLookup] @Results;

Моя цель - передать @Results хранимой процедуре, а затем заменить @Results результатами вызова spResultLookup.

Альтернативой является удаление строк в @Results и использование оператора INSERT с EXEC.

1 Ответ

0 голосов
/ 01 февраля 2012

Вот страница из документации, которая демонстрирует, как вы можете передавать таблицы в процессы, но она определенно предусматривает, что вы не можете обновить таблицу с помощью DML.

http://msdn.microsoft.com/en-us/library/bb510489.aspx

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

CREATE table #tmp( id int, val VARCHAR(50))
go

CREATE PROC UpdateTmpTable as
begin
    insert into #tmp(id,val) values(1,'abc')
end
GO

exec dbo.UpdateTmpTable
select * from #tmp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...