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

Zwróć sys_refcursor wyroczni do c#

Czy istnieje powód, dla którego nie używasz funkcji zamiast procedury?

CREATE OR REPLACE FUNCTION ListadoClientes() RETURN sys_refcursor
IS 
resul Sys_refcursor;
BEGIN 
  OPEN resul for select ID ,NOMBRES ,APELLIDOS ,CEDULA ,DIRECCION ,TELEFONO  
  from cliente; 
  RETURN resul;
END ListadoClientes;

Następnie w C# musisz to zmienić na to:

cmd.Parameters.Add("resul", OracleDbType.RefCursor, ParameterDirection.ReturnValue);

Po uruchomieniu da.Fill(ds); następnie funkcja jest wykonywana, tj. za pomocą cmd.ExecuteNonQuery(); wykonuje funkcję dwukrotnie.

W każdym razie dla procedury właściwy sposób powinien być następujący:

cmd.CommandText = "ListadoClientes(:resul)";


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie SQL, aby uzyskać odrębne wartości wszystkich wartości kolumn w tabeli

  2. Data Oracle wydaje się równa

  3. Błąd odpytywania KGXGN (15)

  4. Wpis SQL znajdowania osoby ma najwięcej psów

  5. Jak rozwiązać błąd Oracle ORA-01790?