Apakah ada alasan mengapa Anda tidak menggunakan fungsi alih-alih prosedur?
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;
Kemudian di C# Anda harus mengubahnya menjadi ini:
cmd.Parameters.Add("resul", OracleDbType.RefCursor, ParameterDirection.ReturnValue);
Saat Anda menjalankan da.Fill(ds);
kemudian fungsi tersebut dijalankan, yaitu menggunakan cmd.ExecuteNonQuery();
menjalankan fungsi dua kali.
Bagaimanapun, untuk sebuah prosedur, cara yang benar seharusnya seperti ini:
cmd.CommandText = "ListadoClientes(:resul)";