Oracle
 sql >> база данни >  >> RDS >> Oracle

Върнете sys_refcursor на оракула в c#

Има ли причина да не използвате функция вместо процедура?

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;

След това в C# трябва да го промените на това:

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

Когато стартирате da.Fill(ds); тогава функцията се изпълнява, т.е. с помощта на cmd.ExecuteNonQuery(); изпълнява функцията два пъти.

Както и да е, правилният начин за процедура трябва да е този:

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. Преобразуване на текуща_времева марка на Oracle в секунди

  2. Как да принудим Pascal case с поддръжката на Entity Framework на Oracle?

  3. oracle - конвертирайте много формати за дата в една форматирана дата

  4. Синхронизиране на PL/SQL процедура. Как да гарантираме изпълнението на процедура само по една?

  5. Как да получите име на схема на база данни, когато използвате oracle jdbc връзка?