为什么@@ Identity返回null?

don*_*nde 3 sql sql-server sql-server-2000

我有一个.NET 2010应用程序命中SQL2000数据库.代码非常基本.插入记录时,会插入记录,但不会返回id.id列是一个int,它是一个Idetity.这是存储过程...

ALTER PROCEDURE Insert_Vendor

@CorpID as varchar(255), 
@TaxpayerID as varchar(255)
AS

Insert into  dbo.Vendor
(
vdr_CorpID, 
vdr_TaxpayerID
)
values
(
@CorpID, 
@TaxpayerID
)

        IF @@error <> 0 
            BEGIN
                RETURN -1
            END
        ELSE 
        RETURN @@Identity
GO
Run Code Online (Sandbox Code Playgroud)

并在接收端......

 int myID = (int)(db.ExecuteScalar(dbCommand));
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 6

  • 你应该总是使用SCOPE_IDENTITY()
  • 无法通过存储过程中的RETURN返回NULL.你会得到一个SQL警告,它会返回零.
  • ExecuteScalar查找记录集的第1行第1列.上面没有记录集

......所以你SELECT SCOPE_IDENTITY()不要使用RETURN SELECT SCOPE_IDENTITY()