如何从SQL Server中的另一个存储过程调用存储过程?

时间:2012-01-06 16:28:25

标签: sql sql-server sql-server-2005

我有一个主存储过程,插入3个varchar字段,名称,地址和电话号码以及其他3个字段,这些字段在表中插入外键的ID,这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 个答案:

答案 0 :(得分:2)

从主程序:

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

你应该让每个proc返回你需要的数据集,主proc调用它们中的每一个,并按照我上面的说明进行INSERT INTO

table1的表定义必须与完全匹配其他过程返回的结果集的列数和数据类型。

如果你不能保证这个条件,你可能最好写一个返回一个表的函数,这样你就可以insert into table1 (....) select col1, col2, etc from fnFoo(@param)