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.)