1

ストアドプロシージャを作成しようとすると、以下のコードでエラーが発生する理由がわかりません。私はSPに比較的不慣れです。

CREATE PROCEDURE [dbo].[InsertDuplicateFields] 
    (@UniqueColID varchar(50), @IndividualID varchar(50) = null)
AS
Begin           
    INSERT INTO TableCollisionBegin 
        SELECT * FROM TableCollisionBegin 
        WHERE [UniqueColID] = @UniqueColID;

    INSERT INTO TableCollisionDetails 
        SELECT * FROM TableCollisionDetails 
        WHERE [UniqueColID] = @UniqueColID;

    INSERT INTO TableCollisionLocation 
        SELECT * FROM TableCollisionLocation 
        WHERE [UniqueColID] = @UniqueColID;

    INSERT INTO TableDriver 
        SELECT * FROM TableDriver 
        WHERE [UniqueColID] = @UniqueColID;

    INSERT INTO TableFollowUp 
        SELECT * FROM TableFollowUp 
        WHERE [UniqueColID] = @UniqueColID;

    INSERT INTO TableOfficerLogs 
        SELECT * FROM TableOfficerLogs 
        WHERE [UniqueColID] = @UniqueColID;

    INSERT INTO TablePolice 
        SELECT * FROM TablePolice 
        WHERE [UniqueColID] = @UniqueColID;

    INSERT INTO TableRecVerified 
        SELECT * FROM TableRecVerified 
        WHERE [UniqueColID] = @UniqueColID;

    INSERT INTO TableSignature 
        SELECT * FROM TableSignature 
        WHERE [IndividualID] = @IndividualID;

    INSERT INTO TableTrailer 
        SELECT * FROM TableTrailer 
        WHERE [UniqueColID] = @UniqueColID;

    INSERT INTO TableValidateLog 
        SELECT * FROM TableValidateLog 
        WHERE [UniqueColID] = @UniqueColID;

    INSERT INTO TableVehicle 
        SELECT * FROM TableVehicle 
        WHERE [UniqueColID] = @UniqueColID;

    INSERT INTO TableWitness 
        SELECT * FROM TableWitness 
        WHERE [UniqueColID] = @UniqueColID;

    INSERT INTO TableInvolvedPerson 
        SELECT * FROM TableInvolvedPerson 
        WHERE [IndividualID] = @IndividualID;

    INSERT INTO TableStatement 
        SELECT * FROM TableStatement 
        WHERE [UniqueColID] = @UniqueColID; 

    INSERT INTO TableCollisionDiagram 
        SELECT * FROM TableCollisionDiagram 
        WHERE [UniqueColID] = @UniqueColID;
END

私が得るエラーは次のとおりです。

21行目無効な列名'IndividualID'。

挿入するコード行を削除するindividualIDと、UniqueColID

その与えられたテーブルに列があるIndividualIDので、なぜそれが認識されないのかわからないので、これは奇妙です....私はMS Excelでこのコードを入力し、それをメモ帳にコピーして貼り付けました、それがコードがない理由である可能性があります動作していませんか?

そのテーブルから1行をコピーしましたが、ご覧のとおり、次のようになっていますIndividualID

IndividualID
059D1263-F0F3-4D19-8C56-0FC7D2B5266E
4

4 に答える 4

3

パラメータを一重引用符で囲むのはなぜですか?これらのパラメーターは両方ともvarcharであり、これを行う必要はありません。

于 2012-06-06T19:07:37.757 に答える
1

テーブルTableInvolvedPersonを再確認し、列IndividualIDのスペルが同じであることを確認してください。

更新しました

質問を更新したときに、の値を追加しましたIndividualID。追加した値はGuidであり、SQLServerに列として格納できる可能性がありUNIQUEIDENTIFIERます。ただし、ストアドプロシージャで宣言したタイプはですVARCHAR。タイプを再確認できますか?元のテーブルとコピー先のテーブルの両方のIndividualIDのタイプは何ですか?それらは一致しますか?

于 2012-06-06T19:11:20.013 に答える
1

期待しているように見えるがそうではない奇妙なUnicode文字がどこかにないことを再確認してください。

また、各ステートメントの後にエラーチェックを追加して、いずれかが失敗した場合に適切なエラーメッセージを受け取ることができるようにします。これがオールオアナッシングアップデートである必要がある場合は、トランザクションをロールバックすることもできます。

于 2012-06-06T19:18:35.113 に答える
0

このようなクエリは

INSERT INTO `a` SELECT * FROM `a` WHERE `c`=null

値が何であっても、何も挿入しません。のデータcがnullの場合は、を使用する必要がありIS NULL決して =null使用しないでください。

于 2012-06-06T19:16:14.977 に答える