我有一个奇怪的问题,这是设置:
ASP.NET 3.5 app / MSSQLSERVER 2008后端。
我从我的代码调用了ExecuteScalar,它返回了一个对象,然后我尝试将该对象强制转换为int(我实际上有一个泛型方法
T ConvertDBValue<T>(object o) {...}
,但那并不重要。)
ExecuteScalar正在点击以下内容:
...
insert into ...
select scope_identity()
我的主键是一个标识字段,并返回85.接下来我得到的是InvalidCastException试图将85转换为int。
解决方案是显式创建一个INT变量,并在从sproc返回之前为其分配SCOPE_IDENTITY(),如下所示:
...
DECLARE @x int
insert into ...
select @x = scope_identity()
select @x
有人可以告诉我第一种方法有什么问题,为什么它不会将85转换为int?