Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara memanggil fungsi Oracle dengan Kursor Ref sebagai parameter Keluar dari C #?

Anda pasti bisa. Ada beberapa gotcha yang harus diwaspadai, tetapi ini adalah kasus percobaan

create or replace function testodpRefCursor(
                  uniqueId    IN NUMBER 
                 ,resultItems OUT NOCOPY SYS_REFCURSOR) RETURN NUMBER
                 IS

 BEGIN
      OPEN resultItems for select level from dual  connect by level < uniqueId ;
      return 1;
 END testodpRefCursor;
  1. Saya telah menemukan bahwa fungsi suka memilikiReturnValue sebagai PERTAMA paramin koleksinya
  2. BindByName secara default FALSE, jadi defaultnya adalah BIND BY POSITION

Kalau tidak, itu cukup mudah:

  OracleCommand cmd = new OracleCommand("TESTODPREFCURSOR", con);
  cmd.CommandType   = CommandType.StoredProcedure;
  cmd.BindByName = true;
  // Bind 


  OracleParameter oparam = cmd.Parameters.Add("ReturnValue", OracleDbType.Int64);
  oparam.Direction = ParameterDirection.ReturnValue ;       

  OracleParameter oparam0 = cmd.Parameters.Add("uniqueId", OracleDbType.Int64);
  oparam0.Value = 5 ;
  oparam0.Direction = ParameterDirection.Input;

  OracleParameter oparam1 = cmd.Parameters.Add("resultItems", OracleDbType.RefCursor);
  oparam1.Direction = ParameterDirection.Output;




  // Execute command
  OracleDataReader reader;
  try
  {
    reader = cmd.ExecuteReader();

    while(reader.Read() ){
        Console.WriteLine("level: {0}", reader.GetDecimal(0));  
    }

  } ...

Sekarang untuk sampel lainnya, buka direktori Oracle Home Anda dan lihat @ sampel kursor Ref di ODP.NET

misalnya:% rumah klien Oracle%\odp.net\samples\4\RefCursor

hth




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sepenuhnya Memahami PDO ATTR_PERSISTENT

  2. Buat dan Konfigurasikan Oracle Linked Server di SQL Server

  3. Manfaat Mempelajari Sistem DB Baru

  4. ORACLE Cara menggunakan spool dengan lokasi spool dinamis

  5. Bagaimana cara menggunakan PBKDF2 di Oracle 12c?