Y a-t-il une raison pour laquelle vous n'utilisez pas une fonction au lieu d'une procédure ?
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;
Ensuite, en C#, vous devez le remplacer par ceci :
cmd.Parameters.Add("resul", OracleDbType.RefCursor, ParameterDirection.ReturnValue);
Lorsque vous exécutez da.Fill(ds);
puis la fonction est exécutée, c'est-à-dire en utilisant cmd.ExecuteNonQuery();
exécute la fonction deux fois.
Quoi qu'il en soit, pour une procédure, la bonne méthode devrait être celle-ci :
cmd.CommandText = "ListadoClientes(:resul)";