【问题标题】:How do I cast Scope_Identity() to Int?如何将 Scope_Identity() 转换为 Int?
【发布时间】:2009-06-16 14:28:36
【问题描述】:

所以Scope_Identity() 在 SQL Server 中返回一个 ?-Byte 数字类型。

这不是很棒。

有没有一种安全的方法可以在选择查询中将其转换为 int,这样我们就不必在 ODBC Wrapper 中管理 SQL Server 的每一个奇思妙想?

【问题讨论】:

    标签: sql-server scope-identity


    【解决方案1】:

    如果标识所属的源列是整数,则无需强制转换。假设标识列以 Integer 开头或适合“Int”,则以下工作正常。

    DECLARE @NewIdent Int
    SET @NewIdent = SCOPE_IDENTITY()
    

    【讨论】:

    • 所以在分配给NewIdent的过程中会处理演员表,但它仍在演员表中。
    • 它对我不起作用,SQL2016,它只是为我返回 decimal(18,0),我必须将其转换为 int
    【解决方案2】:
    SELECT CAST( bigintcolumn AS int )
    

    (前提是你知道它适合 32 位整数)

    【讨论】:

    • 这就是我的想法,但我不确定为什么它不起作用。 T'正在返回 0。
    【解决方案3】:

    就像这样:

    select CAST(SCOPE_IDENTITY() as int)
    

    还有你的数据层:

    reader.GetInt32(0);
    

    【讨论】:

      猜你喜欢
      • 2014-05-22
      • 1970-01-01
      • 2020-07-17
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多