使用带有引用游标的 Oracle 数据读取器

use*_*605 5 c# oracle visual-studio-2010

我正在尝试在我创建的包中使用带有引用游标的 Oracle 数据读取器。

使用 Visual Studio 和 C#。

虽然我收到了关于我的读者的两个构建错误:

  1. .Parameters 不能像方法一样使用
  2. MyReader 是一个变量,但像方法一样使用。

下面是我的代码:

protected void Page_Load(object sender, EventArgs e)
        {
            string oradb = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=*****)(PORT=***))(CONNECT_DATA=(SERVICE_NAME=***)));User Id=APPS;Password=****;";
            OracleConnection conn = new OracleConnection(oradb);  // C#
            conn.Open();


            OracleCommand myCMD = new OracleCommand();
            myCMD.Connection = conn;
            myCMD.CommandText = "apps.cie_install_base_data.get_serial_trx_hist";
            myCMD.CommandType = CommandType.StoredProcedure;
            myCMD.Parameters.Add(new OracleParameter("p_cursor", OracleDbType.RefCursor)).Direction = ParameterDirection.Output;
            myCMD.Parameters.Add("p_serial_number", OracleDbType.Varchar2, 30).Value = "M5605946";
            OracleDataReader myReader = default(OracleDataReader);
            try
            {
                myCMD.ExecuteNonQuery();
            }
            catch (Exception myex)
            {
                Label1.Text = " " + myex.Message;
            }

            myReader = myCMD.Parameters("p_cursor"); 

            int x = 0;
            int count = 0;

            count = 0;

            //myReader = myCMD.ExecuteReader();
            while (myReader.Read()) {
            for (x = 0; x <= myReader.FieldCount - 1; x++) {
            Label3.Text = myReader(x) + " ";
            }
            Label4.Text = " ";
            count += 1;
            }


            Label5.Text = (count + " Rows Returned.");

            myReader.Close();
            conn.Close();
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

如果有人能明白我为什么会收到这些构建错误,或者知道如何正确显示数据,那就太好了。

kla*_*n69 5

myReader = ((OracleRefCursor)myCMD.Parameters["p_cursor"].Value)).GetDataReader(); 
Run Code Online (Sandbox Code Playgroud)

来自https://docs.oracle.com/cd/B19306_01/win.102/b14307/OracleRefCursorClass.htm


SLa*_*aks 1

与 VB 不同,C# 使用括号来索引集合。

使用[],不使用()