sql >> Database >  >> RDS >> Oracle

Retourneer sys_refcursor van het orakel naar c#

Is er een reden waarom u geen functie gebruikt in plaats van procedure?

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;

Dan moet je het in C# veranderen in dit:

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

Wanneer u da.Fill(ds); . uitvoert dan wordt de functie uitgevoerd, d.w.z. met behulp van cmd.ExecuteNonQuery(); voert de functie twee keer uit.

Hoe dan ook, voor een procedure zou de juiste manier deze moeten zijn:

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


  1. Alleen die rijen selecteren die overeenkomen met alle waarden die zijn opgegeven in de IN-clausule

  2. hoe gegevens bij te werken met behulp van de slaapstand-query met bovenliggende eigenschap in where-clausule

  3. Is er een Spring Batch 3-upgradescript voor MySQL?

  4. Aanroep naar ongedefinieerde functie session_register()