Има ли причина да не използвате функция вместо процедура?
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)";