Подтвердить что ты не робот

TSQL: вызов хранимой процедуры из другой хранимой процедуры и чтение результата

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

EXEC procedure @param

Как получить возвращаемый набор записей? Благодаря

4b9b3361

Ответ 1

Вы можете создать временную таблицу, а затем использовать INSERT INTO #MyTable EXEC procedure @param.

Ниже приведены некоторые другие методы .

Ответ 2

AFAIK, вы не можете. То, что вы, вероятно, хотите сделать, это использовать функцию для ваших первых (или обоих) процедур. Функции могут возвращать только одну вещь, но они могут возвращать таблицу. Хранимые процедуры могут возвращать несколько результатов, но не к другим функциям/хранимым процедурам.

например:.

CREATE FUNCTION [dbo].[fn_GetSubordinates] (
    @sPersonID VARCHAR(10),
    @nLevels INT
)
RETURNS @tblSubordinates TABLE
(
    Person_Id VARCHAR(10),
    Surname char(25),
    Firstname char(25)
)
AS
BEGIN
    ...

Ответ 4

Вы можете сделать это с помощью выходной переменной в сохраненном proc. Например:

CREATE PROCEDURE sp_HelloWorld   @MyReturnValue int OUT
AS
SELECT @MyReturnValue = 100
Return @MyReturnValue 

Чтобы вызвать этот сохраненный процесс, выполните следующие действия:

DECLARE @TestReturnVal int 

EXEC sp_HelloWorld @TestReturnVal output
SELECT @TestReturnVal 

Ответ 5

Во-первых, вы не можете ВОЗВРАТ набор записей хранимой процедурой. По возвращении хранимая процедура может возвращать только целые числа.

Вы упомянули оператор SELECT, который является DQL и предназначен только для показа.

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