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 中输入了这段代码,然后将其复制粘贴到记事本中,这可能是代码不正确的原因吗?不工作?

我从该表中复制了一行,如您所见,它确实有IndividualID

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

4 回答 4

3

为什么在参数周围使用单引号?这两个参数都是 varchar,你不需要这样做。

于 2012-06-06T19:07:37.757 回答
1

仔细检查您的表格TableInvolvedPerson并确保该列IndividualID的拼写相同。

更新

当您更新您的问题时,您为 . 添加了一个值IndividualID。您添加的值是一个 Guid,它可以作为UNIQUEIDENTIFIER列存储在 SQL Server 中。但是您在存储过程中声明的类型是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

无论值是什么,都不会插入任何内容。如果 in 中的数据c为 null,则必须使用IS NULLand never =null

于 2012-06-06T19:16:14.977 回答