what data provider are you using? seehttp://www.ondotnet.com/pub/a/dotnet/2002/12/16/multiresultsets_1202.html?page=2

解决方案 »

  1.   

    OracleDataReader GetSpecials_Procedure(OracleConnection currentConnection) 
    {
       OracleDataReader myDataReader;
       Object my_DBNull;   try {
          my_DBNull = Convert.DBNull;      //**************************************************************
          //Get List of Specials by calling Procedure 
          //LISTBYSUBJECT_SAMPLE
          //**************************************************************
          //Procedure LISTBYSUBJECT_SAMPLE
          //   (   P_CURSOR OUT NILE_TYPES.NILE_CURSOR,
          //      SUBJECTIDIN INTEGER
          //   )
          //   AS
          //   BEGIN
          //   OPEN P_CURSOR FOR
          //   SELECT BOOKID, BOOKTITLE, AUTHOR, PRICE, RETAIL
          //   FROM PRODUCTS
          //   WHERE SUBJECTID = SUBJECTIDIN
          //   AND ROWNUM <= 5;
          //   END LISTBYSUBJECT_SAMPLE;
          //**************************************************************
          OracleDataReader myReader;
          int subjectidin = 21;
          OracleCommand myCommand = new OracleCommand();
          myCommand.Connection = currentConnection;
          myCommand.CommandType = CommandType.StoredProcedure;
          myCommand.CommandText = "LISTBYSUBJECT_SAMPLE";
          
          //Oracle Procedure Requires RefCursor output parameter
          myCommand.Parameters.Add(new OracleParameter("P_CURSOR", 
    OracleType.Cursor, 2000, ParameterDirection.Output, 
    true,0,0,"",DataRowVersion.Default, my_DBNull) );         
          myCommand.Parameters.Add(new OracleParameter("SUBJECTIDIN", 
    OracleType.Int32, 0, ParameterDirection.Input, 
    true,0,0,"",DataRowVersion.Default, my_DBNull) );         
          
          //set SUBJECTIDIN parameter value to 21 (Specials)
          myCommand.Parameters[1].Value = subjectidin;
       
          myDataReader = myCommand.ExecuteReader();      return (myDataReader);
       }   
       catch (OracleException e) {
          throw e;
       }
    }
      

  2.   

    .NET执行存储过程:
    SqlCommand oCmd = new SqlCommand();
    oCmd.CommandType=CommandType.StoredProcedure;
    oCmd.CommandText="ProName";
    SqlParameter oPara=oCmd.Parameters.Add("@RecordCount",SqlType.Int);
    oPara.Value=条件字符串;
    oCmd.Connection=oConn;oConn.Open();
    SqlDataAdapter oDa=new SqlDataAdapter(oCmd);
    oDs.Fill(oDs);