1
我有一个看起来像这样的存储过程。使用sqlCommand.ExecuteNonQuery()返回作用域标识
ALTER PROCEDURE dbo.addPackage(
@PackageStatus VARCHAR(50) = null,
@OrgCode VARCHAR(50) = null,
@SystemID VARCHAR(50) = null,
@ID int OUTPUT
)
AS
BEGIN
insert into package_table
(
PackageStatus,
OrgCode,
SystemID
)
values
(@PackageStatus,
@OrgCode,
@SystemID
)
SET @ID = SCOPE_IDENTITY()
END
而我的函数添加下列参数的SQL命令,并呼吁sqlCommand.ExecuteNonQuery();
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@PackageStatus", package.PackageStatus));
parameters.Add(new SqlParameter("@OrgCode", package.OrgCode));
parameters.Add(new SqlParameter("@SystemID", package.SystemID));
SqlParameter outParameter = new SqlParameter("@ID", SqlDbType.Int);
outParameter.Direction = ParameterDirection.Output;
parameters.Add(outParameter);
,但我一直在存储porcuedure得到一个0回evne虽然我有一个输出参数声明,并将其设置在存储过程退出之前。该记录成功添加了ID的自动递增值,但是当我得到输出参数时,ID不会被返回。它设置为0.
有什么建议吗?
您可以简单地将该值作为标量而不是输出参数返回吗?更容易处理,恕我直言。 – sfuqua 2011-12-13 17:06:19
你的代码看起来不正确。你的参数名称被定义为iD(小写字母I),SET语句使用ID(大写字母I)和你的代码来得到输出参数的值使用完全不同的APID。你可以发布你正在使用的实际代码吗? – 2011-12-13 17:17:57