23 de enero de 2015

C# - Oracle: Funciones

Se utilizara la conexión a la tabla BLOGTABLE en la base de datos lingonet que se trabajo en esta entrada.

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();
        }

Related Posts:

  • C# - Oracle: FuncionesSe utilizara la conexión a la tabla BLOGTABLE en la base de datos lingonet que se trabajo en esta entrada. Vamos a crear una función que devuelva el numero de filas de la tabla BLOGTABLE que cumplan con un requisito especifi… Read More
  • C# - Oracle: Triggers Triggers en ORACLE Un "trigger" (disparador o desencadenador) es un bloque de código que se ejecuta automáticamente cuando ocurre algún evento (como inserción, actualización o borrado) sobre una determinada tabla (o vista); … Read More
  • Cursores en Oracle CURSORES EXPLÍCITOS Se utilizan para trabajar con consultas que pueden devolver más de una fila. Hay cuatro operaciones básicas para trabajar con un cursor explícito: 1- Declaración del cursor: Dentro de la parte DEC… Read More
  • C# - Oracle: Refcursor y DataReaderLo primero sera definir la tabla BLOGTABLE que se utilizara, esta almacenara informacion referente de un empleado en tres campos de tipo varchar2 tal como se muestra: Ahora muestro el formulario que se utilizara para pedi… Read More
  • C# - Oracle: Bloques Anonimos Los bloques PL/SQL son unidades de código que se envían al servidor para que sean procesadas conjuntamente, este tipo de subprogramas son menos conocidos que los procedimientos almacenados, funciones y triggers, pero son eno… Read More