Как вызвать хранимую процедуру (с параметрами) из другой хранимой процедуры без временной таблицы - PullRequest
21 голосов
/ 08 декабря 2011

Я сохранил процедуру A и хочу вызвать хранимую процедуру B из A, передав параметр @mydate.Хранимая процедура B вернет набор строк, который я в дальнейшем смогу использовать в процедуре A.

Я исследовал это в Google, но ничего не нашел без использования временной таблицы.Есть ли простой способ получить это без временной таблицы.

PS: я попытался сделать это, используя хранимую процедуру как A и функцию как B легко.Но хочу знать, смогу ли я сделать это только с помощью хранимых процедур.

Ответы [ 5 ]

14 голосов
/ 15 ноября 2013
 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 =@param3

SELECT id ,name ,address  FROM @Table  
8 голосов
/ 08 декабря 2011

Вы можете просто вызвать команду Execute.

EXEC spDoSomthing @myDate

Редактировать

Так как вы хотите вернуть данные ... это немного сложнее. Вместо этого вы можете использовать пользовательские функции, которые возвращают данные.

4 голосов
/ 22 сентября 2014

Вы можете вызывать хранимую процедуру следующим образом внутри хранимой процедуры B.

CREATE PROCEDURE spA
@myDate DATETIME
AS
    EXEC spB @myDate

RETURN 0
1 голос
/ 11 ноября 2013

Вы можете создать переменную таблицы вместо таблицы тампона в процедуре A, выполнить процедуру B и вставить ее во временную таблицу по следующему запросу.

DECLARE @T TABLE
(
TABLE DEFINITION
)
.
.
.
INSERT INTO @T
EXEC B @MYDATE

и вы продолжите операцию.

0 голосов
/ 08 декабря 2011

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

Скажите, что ваша процедура X. Тогда в X вы можете использовать

EXECUTE PROCEDURE Y () RETURNING_VALUES RESULT;"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...