Написание хранимой процедуры, работающей с набором результатов, из оператора SELECT - PullRequest
0 голосов
/ 08 сентября 2018

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

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

В принципе, я хочу быть в состоянии сделать

EXEC MYCOOLSPROC @myTVP = resulting rows of 'SELECT * FROM AWESOME_TABLE WHERE ID > 10 AND ID < 20'

1 Ответ

0 голосов
/ 08 сентября 2018

Сначала необходимо создать параметр tvp в MYCOOLSPROC как READONLY

CREATE PROCEDURE MYCOOLSPROC
@bTVP MYTVP READONLY
AS
BEGIN
    SELECT * FROM @bTVP   
END

И это пример того, как вы используете это с MYCOOLSPROC

Объявите переменную TVP, вставьте в нее некоторые значения ОБЪЯВИТЬ @aTVP MYTVP

INSERT INTO @aTVP ( ... ) VALUES ( ... )

ИЛИ это может быть результатом другой хранимой процедуры

INSERT INTO @aTVP
EXEC AnotherStoredProcedure

И тогда вы можете передать @aTVP на MYCOOLSPROC

EXEC MYCOOLSPROC @bTVP = @aTVP
...