Er der en grund til, at du ikke bruger en funktion i stedet for 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;
Så i C# skal du ændre det til dette:
cmd.Parameters.Add("resul", OracleDbType.RefCursor, ParameterDirection.ReturnValue);
Når du kører da.Fill(ds);
derefter udføres funktionen, dvs. ved hjælp af cmd.ExecuteNonQuery();
udfører funktionen to gange.
I hvert fald, for en procedure bør den rigtige måde være denne:
cmd.CommandText = "ListadoClientes(:resul)";