2012-01-06 18 views
1

私は3つのvarcharフィールド、名前、アドレス、電話番号、テーブルの外部キーからIDを挿入する3つのフィールドを挿入するメインストアドプロシージャを持っています。これらの2つの外部キーフィールドも、データ。メインSPからストアドプロシージャを呼び出して、それらを実行するときに生成されるvarcharフィールドと外部キーフィールドを挿入するにはどうすればよいですか?主な手順からSQL Serverの別のストアドプロシージャからストアドプロシージャを呼び出すにはどうすればよいですか?

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 

答えて

2

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

あなたが持っている必要があり、それぞれのデータが必要な設定を返すと、それらの各メインPROCコールと私は上記示したようINSERT INTOを行います。proc。

table1のテーブル定義は、正確に一致するように列と他の手続きオブジェクトによって返される結果セットのデータ・タイプの数を有します。

あなたはこの条件を保証することはできません場合は、insert into table1 (....) select col1, col2, etc from fnFoo(@param)

+0

その他の手続を行うことができるように、あなたはおそらく、テーブルを返す関数を書いたほうが良いですまた、独自のテーブルにデータを挿入する基本的に私はしたいですメインSPからそれらを実行して、3つのvarcharフィールドとテーブル2と3のIDを入力します。 –

+0

@arturor「自分のテーブルのデータ」と言うと、テンポラリテーブルですか?しかし、やはり、プロクセスを自分たちで実行させることがすべての問題であれば、 'exec yourprocname'を実行してください。それはあまり良いアイデアではないので、あなたは 'グローバル一時テーブル 'に言及していないことを願っています。あなたのprocが同時に実行していると想像してください... – Icarus

+0

いいえ、彼らは一時テーブルではなく、彼らはデータを挿入する独自のSPを持っています –

関連する問題