T-Sql Как вернуть таблицу из хранимого процесса в другой хранимый процесс - PullRequest
14 голосов
/ 02 февраля 2009

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

    ALTER PROC [GETSomeStuff]
    AS
    BEGIN

    @table = exec CB_GetLedgerView @accountId, @fromDate, @toDate, @pageSize, @pageNumber, @filter, @status, @sortExpression, @sortOrder, @virtualCount OUTPUT

   Select * from @table
   --Do some other stuff here        
    END

Ответы [ 3 ]

22 голосов
/ 02 февраля 2009

Целью хранимой процедуры должна быть временная или фактическая таблица, чтобы вы могли

    Insert into #table exec CB_GetLedgerView @accountId, @fromDate, 
@toDate, @pageSize, @pageNumber, 
@filter, @status, @sortExpression, 
@sortOrder, @virtualCount OUTPUT

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

4 голосов
/ 25 июня 2013

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

DECLARE @return_value INT
DECLARE @tblOutputTable TABLE(Col1 BIT NOT NULL, Col2 INT NOT NULL)

INSERT INTO @tblOutputTable EXEC @return_value = [dbo].[SomeSp] @Param1 = 15, @Param2 = 2
0 голосов
/ 02 февраля 2009

Может быть, ваш пример не совсем репрезентативен, но первый вопрос, который у меня возникнет, заключается в том, действительно ли вам нужно выполнить эти две процедуры за счет большей сложности? Такое разложение - это своего рода антипаттерн с SQL. (Хотя некоторые не согласятся, но я видел, что это обсуждалось с большинством здесь на SO).

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