Vamos a crear una función que devuelva el numero de filas de la tabla BLOGTABLE que cumplan con un requisito especificado por el usuario, el requisito lo tomeremos de un textbox desde un formulario y el resultado de las filas lo mostraremos en un label dentro del mismo formulario.
Funcion Oracle
create or
replace package pabletoreto
as
function
TotalRegistros(id varchar2)RETURN number;
end pabletoreto;
create or
replace package body pabletoreto
as
function
TotalRegistros(valor varchar2)
return
number
is
registros
number;
begin
select
count(*) into registros from BLOGTABLE where ID
= valor;
return
registros;
end;
end pabletoreto;
Ahora antes de ejecutarlo desde C# lo vamos a probar con un bloque anonimo asi:
declare
total NUMBER;
parametro VARCHAR2(10);
begin
parametro := '0909';
total:= pabletoreto.TotalRegistros (parametro);
DBMS_OUTPUT.put_line(total);
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line(SQLERRM);
end;
Una vez nos aseguramos que todo va bien, creamos el codigo para invocar la funcion y obtener el resultado desde C#
private void btxBuscar_Click(object sender, EventArgs e){
OracleCommand cmd = new OracleCommand();
cmd.Connection = Conectar();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "pabletoreto.TotalRegistros";
cmd.BindByName = true;
string termino = Convert.ToString(txtID.Text.Trim());
cmd.Parameters.Add(new OracleParameter("valor", OracleDbType.Varchar2)).Value = termino;
cmd.Parameters.Add("total", OracleDbType.Int32).Direction = ParameterDirection.ReturnValue;
try{
cmd.ExecuteNonQuery();
string resultado = (cmd.Parameters["total"].Value).ToString();
label1.Text
= "resultados encontrados: " +
resultado;
}
catch (Exception ex){ MessageBox.Show(ex.Message); }
cmd.Connection.Close();
}