sql - 为什么@@Identity 返回 null?

标签 sql sql-server sql-server-2000

我有一个 .NET 2010 应用程序命中 SQL2000 db。代码非常基础。当我插入一条记录时,记录被插入,但没有返回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

而在接收端...
 int myID = (int)(db.ExecuteScalar(dbCommand));

最佳答案

  • 您应该始终使用 SCOPE_IDENTITY()
  • NULL 不能通过 RETURN 从存储过程返回。你会得到一个 SQL 警告,它会返回零。
  • ExecuteScalar 查找记录集的第一行第一列。上面没有记录集

  • ... 所以你会使用 SELECT SCOPE_IDENTITY()不是 RETURN SELECT SCOPE_IDENTITY()

    关于sql - 为什么@@Identity 返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3876178/

    相关文章:

    SQL - 如何从另一个表获取多个值以适合 select 语句中的一行?

    sql-server - SQL DATETIME 从 Excel 插入?

    sql - SQL Server 中的 XML 查询

    c# - SQL Compact 2008 连接字符串问题

    sql-server - 带有 SQL Server 的 postgresql

    sql-server - SQL中当前记录日期字段的同一天或之前的累计每日总和

    mysql - SQL查询: how to perform multiple count comparison inside one table

    php - 级联删除sql

    sql - 如何获取日期的 id

    sql - 使用 Scala 中的数据帧在 Spark 1.30 中保存为文本