从C#调用oracle存储过程时出现ORA-06550异常

时间:2011-06-13 15:07:41

标签: c# oracle

我正在尝试从我的C#应用​​程序调用oracle存储过程,我收到以下错误:

  

ORA-06550:第1行第7栏:
  PLS-00306:错误的数量或类型   调用'DELETE_SEARCH'的参数
  ORA-06550:第1行第7栏:
  PL / SQL:忽略语句

程序声明是:

PROCEDURE delete_search (user_ip IN VARCHAR2)

和假设调用它的C#代码是:

OracleCommand cmd;
OracleParameter param;
for (int i = 0; i < data.Tables[0].Rows.Count; i++)
{
    if (decimal.Parse(data.Tables[0].Rows[i][1].ToString()) < numericUpDown1.Value)
    {
        cmd = new OracleCommand("delete_search", Form1.conn());
        cmd.Parameters.Clear();
        cmd.CommandType = CommandType.StoredProcedure;
        param = new OracleParameter();
        param.ParameterName = "ip";
        param.Value = data.Tables[0].Rows[i][0].ToString();
        param.Direction = ParameterDirection.Input;
        param.OracleType = OracleType.VarChar;
        cmd.Parameters.Add(param);
        Form1.adapter().SelectCommand = cmd;
        Form1.adapter().SelectCommand.ExecuteNonQuery();
    }
}    

当然会抛出异常:

Form1.adapter().SelectCommand.ExecuteNonQuery();

可能是什么问题?

2 个答案:

答案 0 :(得分:5)

不应该

param.ParameterName = "ip";

param.ParameterName = "user_ip";

答案 1 :(得分:0)

你传递错误的参数名称。它应该是

param.ParameterName = "user_ip";