T-Sql Как вернуть таблицу из хранимогопрограммы в другой сохраненной процедуре

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

    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

Ответы

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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