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

Kembalikan sys_refcursor dari Oracle ke c#

Apakah ada alasan mengapa Anda tidak menggunakan fungsi alih-alih prosedur?

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;

Kemudian di C# Anda harus mengubahnya menjadi ini:

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

Saat Anda menjalankan da.Fill(ds); kemudian fungsi tersebut dijalankan, yaitu menggunakan cmd.ExecuteNonQuery(); menjalankan fungsi dua kali.

Bagaimanapun, untuk sebuah prosedur, cara yang benar seharusnya seperti ini:

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. Bagaimana menjalankan prosedur tersimpan di pengembang Oracle sql?

  2. Melihat aplikasi oracle dan mendapatkan:java.lang.ClassNotFoundException:oracle.forms.engine.Main

  3. Rekursi Oracle SQL untuk menemukan instance pertama dari nilai kolom non-null

  4. Isi nilai null dengan jumlah non-null terakhir - Oracle SQL

  5. Entity Framework Database-Pertama dengan Oracle Database