paras是要传递的参数名称,vals是要传递的值
ocmd是oraclecommand,对应存储过程BBTEST,有一个输出参数V1  for (int i = 0; i < paras.Length; i++)
            {
                //向Oracle存储过程传递参数
                try
                {
                    ocmd.Parameters.AddWithValue(paras[i].ToString(), vals[i].ToString());
                }
                catch (Exception ex)
                {
                    Comm.SetNote("在添加参数:" + paras[i].ToString() + "的时候发生如下错误:<br>" + ex.Message.ToString()); 
                }
            }            ocmd.Parameters.Add(new OracleParameter("V1", OracleType.VarChar, 1));
            ocmd.Parameters["V1"].Direction = ParameterDirection.Output;
            try
            {
                ocmd.ExecuteNonQuery();
                string retval = ocmd.Parameters["V1"].Value.ToString();
                return Convert.ToBoolean(retval);
            }
执行的时候出现如下错误:
ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'BBTEST' ORA-06550: line 1, column 7: PL/SQL: Statement ignored 

解决方案 »

  1.   

    wrong number or types of arguments
    ---------
    数据类型或长度不对...要和存储过程参数类型匹配...
      

  2.   

      (  
      V1 VARCHAR2,  
      V2 OUT VARCHAR2 
    )  
    Oracle存储过程是这样定义的,不需要长度啊,而且,V1是Varchar2,参数传递的时候是string,应该可以吧,郁闷了...
      

  3.   

    ocmd.Parameters.Add(new OracleParameter("V1", OracleType.VarChar, 1));//这不是长度是什么?你指定了参数的长度是1...那么输出超过1个字符就会越界...