У меня есть хранимая процедура, которая, заканчивая SELECT, возвращает набор записей. Я могу вызвать его в следующей хранимой процедуре:
EXEC procedure @param
Как получить возвращаемый набор записей? Благодаря
У меня есть хранимая процедура, которая, заканчивая SELECT, возвращает набор записей. Я могу вызвать его в следующей хранимой процедуре:
EXEC procedure @param
Как получить возвращаемый набор записей? Благодаря
Вы можете создать временную таблицу, а затем использовать INSERT INTO #MyTable EXEC procedure @param
.
Ниже приведены некоторые другие методы .
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
...
Если вы используете SQL Server 2008, я бы рекомендовал вернуть параметр Table-Valued.
Вы можете сделать это с помощью выходной переменной в сохраненном proc. Например:
CREATE PROCEDURE sp_HelloWorld @MyReturnValue int OUT
AS
SELECT @MyReturnValue = 100
Return @MyReturnValue
Чтобы вызвать этот сохраненный процесс, выполните следующие действия:
DECLARE @TestReturnVal int
EXEC sp_HelloWorld @TestReturnVal output
SELECT @TestReturnVal
Во-первых, вы не можете ВОЗВРАТ набор записей хранимой процедурой. По возвращении хранимая процедура может возвращать только целые числа.
Вы упомянули оператор SELECT
, который является DQL и предназначен только для показа.
Как вы можете это сделать, так это то, что вы можете назначить набор записей глобальной временной таблице, к которой также можно получить доступ во внешней хранимой процедуре.