Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak wywołać funkcję Oracle z kursorem Ref jako parametrem wyjściowym z C#?

Na pewno możesz. Jest kilka rzeczy, na które należy uważać, ale oto przykład testowy

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. Odkryłem, że funkcje lubią mieć wartośćReturnValue jako PIERWSZĄ paraminuj kolekcję
  2. BindByName jest domyślnie FALSE, więc domyślnie BIND BY POSITION

W przeciwnym razie sprawa jest całkiem prosta:

  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));  
    }

  } ...

Teraz, aby uzyskać więcej próbek, przejdź do katalogu Oracle Home i spójrz na próbki kursora Ref w ODP.NET

na przykład:% strona główna klienta 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. Test wydajności i dostrajania Oracle

  2. Zrekonstruuj rezerwową bazę danych w stanie gotowości

  3. Zbyt skomplikowana obsługa obiektów Oracle jdbc BLOB

  4. LongOpsWatcher w SQL Dev

  5. Pobierz BLOB z kolumny BFILE w Oracle