本人属于刚开始学习存储过程的菜鸟一枚,现遇到这个问题解决不了,求大神指教:
我的存储过程是:
create or replace procedure lj_test(inparam in varchar2,  outparam  out varchar2, inoutparam  in out varchar2)
as
  varparam varchar2(28);
begin
  varparam := inparam;
  outparam := varparam || inoutparam;
end;调用的C#程序是:
conn.Open();
                OracleCommand cmd = new OracleCommand("LJ_TEST", conn);
                cmd.CommandType = CommandType.StoredProcedure;                OracleParameter[] parameters ={
                                                  new OracleParameter("inparam",OracleType.VarChar),
                                                  new OracleParameter("outparam",OracleType.VarChar),
                                                  new OracleParameter("inoutparam",OracleType.VarChar,28)
                                              };
                parameters[0].Value = "dd";
                parameters[2].Value ="ff";
                parameters[0].Direction = ParameterDirection.Input;
                parameters[1].Direction = ParameterDirection.Output;
                parameters[2].Direction = ParameterDirection.InputOutput;
                OracleDataReader oda = cmd.ExecuteReader();                while (oda.Read())
                {
                    textBox1.Text = oda[0].ToString();
                }
错误信息是:
ORA-06550: 第 1 行, 第 7 列: 
PLS-00306: 调用 'LJ_TEST' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列: 
PL/SQL: Statement ignored存储c#pl/sqloracle

解决方案 »

  1.   

    顺便说一个存储过程在PL/SQL中测试过,没有问题的,测试的数据是:declare 
      -- Local variables here
      param_out varchar2(28);
      param_inout varchar2(28);
      
    begin
      param_inout := 'ff';
      lj_test('dd',param_out,param_inout);
      dbms_output.put_line(param_out);
      -- Test statements here
      
    end;
      

  2.   

    终于找到问题所在啦,参数是没问题,只是我没把参数添加进去,在代码中加入下面一句代码就行啦。
    cmd.Parameters.AddRange(parameters);
    自己在太粗心啦!!!