2017-10-24 22 views
0

SQLを使用して複数の値を複数のテーブルに挿入できるストアドプロシージャを作成しようとしています。テーブルの中には同じデータを共有するものがありますので、同じ値を各テーブルに挿入する必要があります。同じ変数を使って挿入しようとしましたが、うまくいかないようです。複数のテーブルに同じ変数と値を挿入する

目標は、時間を節約することです。同時にすべてのテーブルにデータを挿入すると、一度に1つのクエリを実行する各テーブルを通過する必要がなくなります。以下のNULLSは実際にはデータを持つカラムを表し、テストのために残っています。

私はそれを機能させるために何ができますか?アプローチの考え方はどれですか?

create proc InsertMultipleValues 
    (
    @BusName varchar (50), 
    @BusReg varchar (10), 
    @Invoice varchar (50), 
    @Receipt varchar (50), 
    @Total varchar(20), 
    @KioskID varchar(50), 
    @Date date 
    ) 
    AS 
    Begin 
      Insert into GAFSupplies values 
      (newid(), @BusName, @BusReg, @KioskID, @Date, @Invoice, NULL, 
      NULL, NULL, NULL, NULL, NULL, NULL, NULL, @Date) 

      Insert into GAFLedgers values 
      (newid(),@Date, NULL, @KioskID, NULL, NULL, @BusName, NULL, 
      @Invoice, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, @Date) 

      Insert into Renewals values (newid(), @BusReg, NULL, 'T', NULL, NULL, 
      @BusName, NULL, 
      900, 'B', NULL, @Receipt, NULL, NULL, @KioskID, NULL, @Date) 
End 

The screenshot shows the error when running the stored procedure

+0

表の列と挿入文の列が一致しないというエラーが表示されます –

+0

表の列 –

+0

をチェックしてください。列の値を渡して –

答えて

0

あなたには、いくつかの列の値が欠落しているように思えます。命令挿入

に列名を提供し、あなたのテーブルや入力値の列が一致していないので、このエラーが来ている(列1、列2)の値(1、「テストに」)GAFSuppliesに

+0

ええ、ありがとう!私は実際にリニューアルテーブルのための1列を欠場しました。 –

0

を挿入します。 だから、例えばINSERTクエリ に列名と値を指定します。

INSERT INTO TABLE (COLUMN1, COLUMN2,COLUMN3) VALUES (VALUE1,VALUE2, VALUE3) 

これがベストプラクティスです。この場合、一時的な目的でテーブルに追加の列を追加すると、既存の挿入クエリには影響しません。

関連する問題