【发布时间】:2014-01-08 15:44:36
【问题描述】:
我有一个带有参数@id int OUTPUT 的存储过程(sql server 2012)
该过程向数据库的表中插入一些数据并返回受影响行的 ID
SET @id=SCOPE_IDENTITY()
RETURN @id
我从 SQL Server 测试它,它工作正常。但是当我从 C# 调用它时:它确实将数据插入到表中,但返回 null:
SqlParameter parm = new SqlParameter("@id", SqlDbType.Int);
parm.Size = 32;
parm.Direction = ParameterDirection.Output; // This is important!
cmd.Parameters.Add(parm);
object id = (int?)cmd.ExecuteScalar();//<-null
请指出导致这种奇怪行为的原因?
【问题讨论】:
-
@Steve - 抱歉 - 打错了
-
请看我的 cmets 关于 Steve 和 Damith 的回答。简而言之,请不要使用 RETURN 来获取 IDENTITY 值,因为 RETURN 的数据类型仅为 INT 而 IDENTITY 可以是 BIGINT 等。
标签: c# sql sql-server stored-procedures sql-server-2012