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

问题描述

| 我正在尝试从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();
可能是什么问题?     

解决方法

        不应该
param.ParameterName = \"ip\";
param.ParameterName = \"user_ip\";
    ,        您传递了错误的参数名称。它应该是
param.ParameterName = \"user_ip\";
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...