我有一个如下查询

declare @str_CustomerID int
Insert into IMDECONP38.[Customer].dbo.CustomerMaster
( CustomerName , CustomerAddress , CustomerEmail , CustomerPhone )
values ( ‘werw12e’ , ‘jkj12kj’ , ‘3212423sdf’ , ‘1212121′
)

select @str_CustomerID= scope_identity()

执行后,它在我的参数中返回null。

我想获得身份的值(value)。我怎样才能做到这一点?

此处的主要问题是“IMDECONP38”-我使用的服务器名称。如果删除此选项,则可以在参数中获取identity的值。

最佳答案

当您使用“IMDECONP38”时,您会破坏SCOPE_IDENTITY,因为

  • INSERT范围现在位于IMDECONP38链接服务器
  • SCOPE_IDENTITY在本地服务器上运行,而不是IMDECONP38

  • 如果在SQL Server 2005上,请尝试OUTPUT子句,但我不确定它如何用于链接服务器调用
    Insert into IMDECONP38.[Customer].dbo.CustomerMaster
    OUTPUT INSERTED.ID   --change as needed
    ( CustomerName , CustomerAddress , CustomerEmail , CustomerPhone )
    values ( ‘werw12e’ , ‘jkj12kj’ , ‘3212423sdf’ , ‘1212121′
    )
    

    编辑:Prutswonder首先说过:在链接的服务器上使用存储的proc

    关于SQL Server身份问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2621887/

    10-10 03:31