Как вызвать хранимую процедуру из другой хранимой процедуры в SQL Server? - PullRequest
1 голос
/ 06 января 2012

У меня есть основная хранимая процедура, которая вставляет 3 поля varchar, имя, адрес и номер телефона и другие 3 поля, которые вставляют идентификатор из внешних ключей в таблицу, эти 2 поля внешнего ключа также используют хранимую процедуру вставки для вставки их собственные данные. Как мне вызвать эти хранимые процедуры из основного SP, чтобы вставить поля varchar и поля внешнего ключа, сгенерированные при их выполнении?

Table 1          Table 2         Table 3
id,              id2,            id3,
name1,           name2,          name3, 
address1,        address2,       address3,
phoneNumber1,    phoneNumber2,   phoneNumber3
id2,
id3,

create procedure table1    
@id int,
@name1 varchar(30),
@address1 varchar(100),
@phoneNumber1 varchar(30)
as
    BEGIN
set nocount on;

Insert into table1
           (id,
           name,
           address,
           phoneNumber)
    values(
           @id,
           @name,
           @address,
           @phoneNumber)
    END

------After inserting the data into table 1, I want to call the SP of table 2 and 3---

EXEC SPTable2

1 Ответ

2 голосов
/ 06 января 2012

Из основной процедуры:

Insert into table1 (...)
exec yourProcName @param='foo'

Вам нужно, чтобы каждый прок возвращал необходимый вам набор данных, а основной прок вызывал каждый из них и делал INSERT INTO, как я показал выше.

Определение таблицы table1 должно точно соответствовать числу столбцов и типов данных наборов результатов, возвращаемых другими процессами.

Если вы не можете гарантировать это условие, вам, вероятно, лучше написать функцию, которая возвращает таблицу, чтобы вы могли выполнить insert into table1 (....) select col1, col2, etc from fnFoo(@param)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...