繁体   English   中英

需要创建一个存储过程但是有问题

[英]need to create a stored procedure but having issues

我不确定为什么在尝试创建存储过程时以下代码会出错。 我对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

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

仔细检查表TableInvolvedPerson ,并确保“ IndividualID ”列的拼写相同。

更新

当您更新问题时,您为IndividualID添加了一个值。 您添加的值是一个Guid,可以将其作为UNIQUEIDENTIFIER列存储在SQL Server中。 但是,您在存储过程中声明的类型是VARCHAR 您可以仔细检查您的类型吗? 原始表和要复制到的表上的IndividualID的类型是什么? 他们匹配吗?

仔细检查一下,您在某个地方没有一个奇怪的Unicode字符, 看起来像您期望的那样,但事实并非如此。

我还将在每条语句后添加错误检查,以便在其中一条失败的情况下获得明智的错误消息。 然后,如果需要全部更新或全部更新,则还可以回滚事务。

请记住,这样的查询

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM