sql >> Databáze >  >> RDS >> Oracle

Vraťte sys_refcursor oracle do c#

Existuje důvod, proč místo procedury nepoužíváte funkci?

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;

Pak to v C# musíte změnit na toto:

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

Když spustíte da.Fill(ds); pak se funkce provede, tj. pomocí cmd.ExecuteNonQuery(); provede funkci dvakrát.

Každopádně pro postup by správný způsob měl být tento:

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


  1. Seznam Pythonu do pole PostgreSQL

  2. Jak naprogramovat spouštěč MySQL pro vložení řádku do jiné tabulky?

  3. Skalární funkce ODBC pro datum a čas na serveru SQL (příklady T-SQL)

  4. Připojení oci_connect se nezdařilo