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)";