这个存储过程名称是getLists,
在pl/sql 调用是:
variable rc2 refcursor
exec getLists(:rc2)
结果是正常的但是我用C#程序调用
string sql = "EIP_DWH.getExecCompGlobalPersonIDList";
OracleParameter par = new OracleParameter(":rc2 ", OracleType.Cursor);
这个异常详细是:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'GETEXECCOMPGLOBALPERSONIDLIST'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

解决方案 »

  1.   

    sorry,刚才是操作失误,表述不清楚呀这个存储过程名称是getLists, 
    在pl/sql 调用是: 
    variable rc2 refcursor 
    exec getLists(:rc2) 
    结果是正常的 但是我用C#程序调用 
    string sql = "Test.getLists"; 
    OracleParameter par = new OracleParameter(":rc2 ", OracleType.Cursor); 这个异常详细是: 
    ORA-06550: line 1, column 7: 
    PLS-00306: wrong number or types of arguments in call to 'GETLISTS' 
    ORA-06550: line 1, column 7: 
    PL/SQL: Statement ignored 本人对Oracle不熟悉 请高手指点一下,谢谢。
      

  2.   

    cmd.CommandType = CommandType.StoredProcedure
    OracleParameter par = new OracleParameter();
    par.OracleDbType = OracleDbType.RefCursor;
    cmd.Parameters.Add(par );  
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  3.   


    Private Sub Exec_Proc(ByVal proc_name As String, ByVal location_id As String, ByVal d1 As String, ByVal d2 As String)
            Dim conn As New OracleConnection(GetOraDB(location_id))
            Try
                conn.Open()
                Dim cmd As New OracleCommand
                cmd.Connection = conn            cmd.CommandText = proc_name
                cmd.CommandType = CommandType.StoredProcedure            cmd.Parameters.Add(New OracleParameter(d1, OracleType.Char))
                cmd.Parameters.Add(New OracleParameter(d2, OracleType.Char))            cmd.ExecuteNonQuery()
            Catch ex As Exception
                WRLog(ex, location_id)
            End Try
        End Sub
      

  4.   

    cmd.CommandType = CommandType.StoredProcedure 
    OracleParameter par = new OracleParameter(); 
    par.OracleDbType = OracleDbType.RefCursor; 
    cmd.Parameters.Add(par ); 
      

  5.   

    OracleClient中调用存储过程时参数是没有前缀的,不能加“:”。
      

  6.   

    谢谢大家,
    我用的是System.Data.OracleClient,我觉得是不是在定义refcursor的时候不正确呀!
      

  7.   


    说的就是System.Data.OracleClient。
    Oracle执行普通的Sql语句时参数名是加“:”前缀的,但是存储过程不能加。
    OracleParameter par = new OracleParameter("rc2 ", OracleType.Cursor); 
      

  8.   

    thanks GaoFx,
    But still throw the same exception, how to solve it? please
      

  9.   

    the connection is ok, but get the data is failed.
    The exception as following:
    ORA-06550: line 1, column 7: 
    PLS-00306: wrong number or types of arguments in call to 'GETLISTS' 
    ORA-06550: line 1, column 7: 
    PL/SQL: Statement ignored