下面是网上的一个存储过程的代码:/// <summary>
/// 创建一个SqlCommand对象以此来执行存储过程
/// </summary>
/// <param name="procName">存储过程的名称</param>
/// <param name="prams">存储过程所需参数</param>
/// <returns>返回SqlCommand对象</returns>
private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
{
// 确认打开连接
Open();
SqlCommand cmd = new SqlCommand(procName, con);
cmd.CommandType = CommandType.StoredProcedure; // 依次把参数传入存储过程
if (prams != null)
{
foreach (SqlParameter parameter in prams)
cmd.Parameters.Add(parameter);
}
// 加入返回参数
cmd.Parameters.Add(
new SqlParameter("ReturnValue", SqlDbType.Int, 4,
ParameterDirection.ReturnValue, false, 0, 0,
string.Empty, DataRowVersion.Default, null)); return cmd;
}就是后面那个"加入返回参数",这个有什么用?一般情况下哪种情况会用到?能否举个简单的例子说明一下这个的用法?因为我看到有的存储过程又没有这个东西
而且上面是返回一个SqlCommand的对象,就更不理解了
/// 创建一个SqlCommand对象以此来执行存储过程
/// </summary>
/// <param name="procName">存储过程的名称</param>
/// <param name="prams">存储过程所需参数</param>
/// <returns>返回SqlCommand对象</returns>
private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
{
// 确认打开连接
Open();
SqlCommand cmd = new SqlCommand(procName, con);
cmd.CommandType = CommandType.StoredProcedure; // 依次把参数传入存储过程
if (prams != null)
{
foreach (SqlParameter parameter in prams)
cmd.Parameters.Add(parameter);
}
// 加入返回参数
cmd.Parameters.Add(
new SqlParameter("ReturnValue", SqlDbType.Int, 4,
ParameterDirection.ReturnValue, false, 0, 0,
string.Empty, DataRowVersion.Default, null)); return cmd;
}就是后面那个"加入返回参数",这个有什么用?一般情况下哪种情况会用到?能否举个简单的例子说明一下这个的用法?因为我看到有的存储过程又没有这个东西
而且上面是返回一个SqlCommand的对象,就更不理解了
说明它是调用存储过程的
比如一个存储过程需要返回给调用者各种结果
for example
成功、失败、异常etc
调用者就可以根据不同的返回结果做不同处理
存储过程的输出参数是可选的。
ado.net调用存储过程最终需要有sqlcommand.ExecNoneQuery 之类的方法来执行