ExecuteNonQuery在存储过程中带有返回值

时间:2018-01-26 16:11:13

标签: c# sql-server stored-procedures

我的C#代码使用返回值(不是返回参数)调用存储过程。

// C#
for (int i = 0; i < param.Length; i++)
{
    cmd.Parameters.Add(param[i]);
}
cmd.CommandType = CommandType.StoredProcedure;

int retval = cmd.ExecuteNonQuery();
con.Close();
return retval;

存储过程插入记录并使用scope_identity()获取新记录ID。

/* SQL */
SET NOCOUNT ON;

INSERT INTO [dbo].[table] (columns)
VALUES (@parameters);


SET @iParentRowId = Scope_identity();


INSERT INTO [table_related] (ParentRowId, Column2) VALUES (@iParentRowId, @Column2Value);

RETURN @iParentRowId;

sp完全符合预期,但C#返回-1。 (我认为这是一个成功指标。)

如果我设置了NOCOUNT,我会得到受影响的行数,这是我不在乎的。

我可以使用sp中的RETURN获取新的RowId吗?

0 个答案:

没有答案