Как вызвать хранимую процедуру (с параметрами) из другой хранимой процедуры без временной таблицы
Я хранил процедуру A и хочу вызвать процедуру хранения B из A, передав параметр @mydate
. Сохраненная процедура B возвращает набор строк, который я могу использовать далее в процедуре A.
Я исследовал это в Google, но ничего не нашел без использования временной таблицы. Есть ли простой способ получить это без временной таблицы.
PS: Я пытался сделать это, используя хранимую процедуру как A и функцию B легко. Но хочу знать, могу ли я сделать это, только используя хранимые процедуры.
Ответы
Ответ 1
Create PROCEDURE Stored_Procedure_Name_2
(
@param1 int = 5 ,
@param2 varchar(max),
@param3 varchar(max)
)
AS
DECLARE @Table TABLE
(
/*TABLE DEFINITION*/
id int,
name varchar(max),
address varchar(max)
)
INSERT INTO @Table
EXEC Stored_Procedure_Name_1 @param1 , @param2 = 'Raju' ,@param3 [email protected]
SELECT id ,name ,address FROM @Table
Ответ 2
Вы можете просто вызвать команду Execute.
EXEC spDoSomthing @myDate
Изменить:
Поскольку вы хотите вернуть данные, это немного сложнее. Вместо этого вы можете использовать определенные пользователем функции, которые возвращают данные.
Ответ 3
Вы можете вызвать Хранимую процедуру, подобную этой, в Хранимой процедуре B.
CREATE PROCEDURE spA
@myDate DATETIME
AS
EXEC spB @myDate
RETURN 0
Ответ 4
Вы можете создать переменную таблицы вместо таблицы tamp в процедуре A и выполнить процедуру B и вставить в временную таблицу по запросу.
DECLARE @T TABLE
(
TABLE DEFINITION
)
.
.
.
INSERT INTO @T
EXEC B @MYDATE
и вы продолжаете работу.
Ответ 5
Вы можете вызвать хранимую процедуру из другой хранимой процедуры, используя команду EXECUTE.
Скажем, ваша процедура X. Затем в X вы можете использовать
EXECUTE PROCEDURE Y () RETURNING_VALUES RESULT;"