如何将Scope_Identity()转换为Int?

12

因此,在 SQL Server 中,Scope_Identity() 返回一个?-Byte 数字类型。

这并不太好。

在选择查询中,有没有一种安全的方式将其转换为 int,以便我们不必在 ODBC Wrapper 中处理 SQL Server 的每个心血来潮?

3个回答

18
如果标识所属的源列是整数类型,则无需进行类型转换。假设标识列一开始就是整数类型或者适合于"Int"类型,下面的代码将能够正常工作。
DECLARE @NewIdent Int
SET @NewIdent = SCOPE_IDENTITY()

3
在分配给NewIdent的过程中,类型转换已经得到处理,但仍然进行了类型转换。 - lowerkey
它对我不起作用,SQL2016,它只是为我返回decimal(18,0),我不得不将其转换为int。 - Mohammad Joneidi

13
SELECT CAST( bigintcolumn AS int )

(假设你知道它可以适应32位整数)


这正是我所想的,但我不确定为什么它不起作用。它返回了0。 - Peter Turner

4
只需像这样投掷:
select CAST(SCOPE_IDENTITY() as int)

同时还有你的数据层:

reader.GetInt32(0);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接