【问题标题】:How to run the stored procedure that has OUTPUT parameter from C#?如何从 C# 运行具有 OUTPUT 参数的存储过程?
【发布时间】:2010-08-08 08:57:20
【问题描述】:

我有一个带有输出参数的存储过程。如何使用 C# 代码读取此值?

【问题讨论】:

  • 请贴出你目前写的代码。
  • 我赞成这个,因为这是一个有用的问题,但由于缺少“我试过这个”,我不能这样做。

标签: c#


【解决方案1】:

我假设您使用 ADO.NET?如果是这样,则 SqlParameter 类具有属性“Direction”。将方向设置为输出,并在查询执行后从该参数读取值。

类似这样的:

using (SqlCommand cmd = new SqlCommand("MyStoredProcedure", cn))
{
    cmd.CommandType = CommandType.StoredProcedure;
    SqlParameter parm = new SqlParameter("@pkid", SqlDbType.Int);
    parm.Value = 1;
    parm.Direction = ParameterDirection.Input;
    cmd.Parameters.Add(parm);

    SqlParameter parm2 = new SqlParameter("@ProductName", SqlDbType.VarChar);
    parm2.Size = 50;
    parm2.Direction = ParameterDirection.Output; // This is important!
    cmd.Parameters.Add(parm2);

    cn.Open();
    cmd.ExecuteNonQuery();
    cn.Close();
}

【讨论】:

  • 我还有一个问题需要确定输出参数是十进制(8,2)如何!!!
  • 我不确定我是否理解这个问题。如果要在输出变量中返回小数,则应将 SqlDbType 设置为 Decimal。如果您实际上返回的是小数,则可以这样转换: (decimal)cmd.Parameters[@"MyDecimal"].Value
  • 我强烈建议将SqlConnectionSqlCommand 放入using(....) { ... } 块中作为最佳做法
  • 调用嵌入的 stroc 或执行嵌套的 stroc 时出现问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-26
  • 1970-01-01
  • 2016-03-24
  • 2021-01-27
  • 1970-01-01
  • 2022-12-06
  • 1970-01-01
相关资源
最近更新 更多