OracleParameter[] op = new OracleParameter[3];
            op[0] = new OracleParameter("username_1", OracleType.VarChar);
            op[0].Value = username;
            op[1] = new OracleParameter("password_1", OracleType.VarChar);
            op[1].Value = password;
            op[2] = new OracleParameter("uname", OracleType.VarChar);
            op[2].Direction = ParameterDirection.Output;
            string sqlstr = "p_selectuserinfo";OracleCommand cmd = new OracleCommand();
            cmd.CommandText = sqlstr;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = Conn;
            
            cmd.ExecuteNonQuery();
            string str= para[2].Value.ToString();
            return str;在sql/plus中
  1  declare ame varchar(20);
  2  begin
  3  p_selectuserinfo('sss','sss',ame);
  4  dbms_output.put_line(ame);
  5* end;
SQL> /
可以执行但在C#中用上面的代码不能执行,请问需要怎么改呢?

解决方案 »

  1.   

    ORA-06550: 第 1 行, 第 7 列: 
    PLS-00306: 调用 'P_SELECTUSERINFO' 时参数个数或类型错误
    ORA-06550: 第 1 行, 第 7 列: 
    PL/SQL: Statement ignoredDescription: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Data.OracleClient.OracleException: ORA-06550: 第 1 行, 第 7 列: 
    PLS-00306: 调用 'P_SELECTUSERINFO' 时参数个数或类型错误
    ORA-06550: 第 1 行, 第 7 列: 
    PL/SQL: Statement ignored
    -------------------------------------------------------------以上是出错信息
      

  2.   

    你都米有传进去参数当然会报错了
    OracleCommand cmd = new OracleCommand();
                cmd.CommandText = sqlstr;
                cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.Add("username_1", OracleType.VarChar).value=username;
    cmd.Parameters.Add("password_1", OracleType.VarChar).Value = password;
    cmd.Parameters.Add("uname", OracleType.VarChar).Direction = ParameterDirection.Output; 
    cmd.ExecuteNonQuery();
                string str= para[2].Value.ToString();
                return str;