因此,我在 SQL 服务器中有这个存储过程,其中包含这段 SQL...存储过程的一部分...IF @@ERROR = 0 --AND @@ROWCOUNT = 1BEGIN .. dO STUFF SELECT * FROM MyTable
所以我在 SQL 服务器中有一个包含这段 SQL 的存储过程
... part of store procedure...
IF @@ERROR = 0 --AND @@ROWCOUNT = 1
BEGIN
.. dO STUFF
SELECT * FROM MyTable
RETURN 0
END
ELSE
BEGIN
RAISERROR('Something went wrong :-(', 16, 1)
RETURN -1
END
END
在我获取数据的 C# 代码中我这样做
//Sql param used to get the return value from the store procedure
SqlParameter returnValueParam = command.Parameters.Add("@return_value", SqlDbType.Int);
returnValueParam.Direction = ParameterDirection.ReturnValue;
using (var reader = command.ExecuteReader(CommandBehavior.CloseConnection))
{
while (reader.Read())
{
SpRetrunValue.EmailAddress = DBNulls.DBNullToString(reader["Email"], string.Empty);
... More stuff
}
reader.NextResult();
SpRetrunValue.ExternalData = new List<ExternalData>();
var ExtData = new ExternalData();
while (reader.Read())
{
ExtData.Id = DBNulls.DBNullToInteger(reader["ID"], 0);
SpRetrunValue.ExternalData.Add(intExtData);
}
//get the return code on the SP 0 for success -1 for error
SpRetrunValue.ResultCode = (int)returnValueParam.Value;
}
我遇到的问题是,如果我使用它, command.ExecuteNonQuery();
那么我可以获得返回值。但是现在使用 as is 我无法获得返回值,但我确实获得了结果集。难道不能通过这种方式获得返回值吗?我 在 上 ,但这需要我向存储过程添加另一个参数,我觉得这违背了像上面的存储过程那样仅返回值的目的。