1,package以及存储CREATE OR REPLACE PACKAGE PKG_RTN AS
  TYPE RESULT_TYPE IS REF CURSOR;END PKG_RTN;CREATE OR REPLACE PROCEDURE RETURNT(RS_DATA IN OUT PKG_RTN.RESULT_TYPE) IS
BEGIN
  OPEN RS_DATA FOR
    SELECT * FROM A;
END;2,C#代码:
               
                try
                {
                    OracleCommand cmd = new OracleCommand();
                    cmd.Connection = conn;
                    conn.Open();
                    cmd.CommandText = "returnT";                    OracleDataAdapter da = new OracleDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    da.Fill(ds);                }catch(Exception ex)
                {
                
                }Ex的message如下:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'RETURNT'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored请指点

解决方案 »

  1.   

    cmd.CommandText = "PKG_RTN.RETURNT"; 
      

  2.   

    in out ? 按你的需求推测应该out就行了。RS_DATA IN OUT PKG_RTN.RESULT_TYPE->RS_DATA OUT RESULT_TYPE还有package body的代码呢?FYI:
    http://topic.csdn.net/t/20030821/11/2172125.html
      

  3.   

    to:hongqi162加了package名字也不行啊。--cmd.CommandText = "PKG_RTN.RETURNT"; to:mantisXF
    package body的代码,这个要怎么写啊,我不明白,我是拿别人的例子参考的,请指正。谢谢!
      

  4.   

    自己搞定了,应该这样写: OracleCommand cmd = new OracleCommand();
                    cmd.Connection = conn;
                    conn.Open();                cmd.CommandType = CommandType.StoredProcedure;
                    cmd.CommandText = "PKG_RTN.RETURNT";                //关键要加这句
                      //rs_data 在Procedure要返回的游标参数
                    cmd.Parameters.Add("rs_data", OracleType.Cursor).Direction = ParameterDirection.Output;  
                    OracleDataAdapter da = new OracleDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    da.Fill(ds);                DataTable dtTable = ds.Tables[0];                foreach(DataRow dtRow in dtTable.Rows)
                    {
                        string test = dtRow["contractid"].ToString(); 
                    }