无法执行存储过程但存储过程中的更新语句有效

时间:2013-09-24 23:29:33

标签: sql-server sql-server-2008

我有一个当前复制到三个不同位置的数据库。它用于应用程序,并且还选择所有表,存储过程和文章进行复制。

当我尝试通过存储过程更新ContactCSR时,出现以下错误:

  

Msg 2627,Level 14,State 1,Procedure UpdateContactCSRs,第14行   违反PRIMARY KEY约束'PK_ContactCSRs'。无法插入   对象'dbo.ContactCSRs'中的重复键。重复的键值是   (3443001,dand)。该声明已被终止..

存储过程的内容如下:

  SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[UpdateContactCSRs] @Contact int,
    @CSR varchar(50),
    @Memo varchar(max),
    @Notify bit,
    @OldCSR varchar(50)
AS
BEGIN
    UPDATE ContactCSRs SET CSR = @CSR,Memo = @Memo, Notify = @Notify WHERE Contact = @Contact  AND CSR = @OldCSR;
END

但是,当我在该过程中运行更新命令时,它可以工作。

不完全确定为什么即使update语句有效,存储过程也不会发生这种情况。

以下是我正在运行的存储过程命令:

exec UpdateContactCSRs 3443001, 'dand','Relationship Manager',1,'AndyK'

以下是我正在运行的更新语句:

UPDATE ContactCSRs SET CSR = 'dand',Memo = 'Relationship Manager', Notify = 1 WHERE Contact = 3443001 AND CSR = 'AndyK'

1 个答案:

答案 0 :(得分:0)

如果在存储过程调用中指定参数名称,是否仍会出现错误?

exec UpdateContactCSRs @Contact = 3443001, @CSR = 'dand', @Memo = 'Relationship Manager', @Notify = 1, @OldCSR = 'AndyK'