25 de enero de 2015

C# - Oracle: Refcursor y DataReader

Lo 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 pedir al usuario el código de empleado que se buscara, en este mismo formulario se presentaran los resultados de la búsqueda, especifico solo dos campos porque el tercero(cargo) es mas de lo mismo


utilizaremos un procedimiento almacenado para la búsqueda

create or replace package pabletoreto
as
 type t_cursor is ref cursor;
 procedure ObtenerCampos(p_ID IN BLOGTABLE.ID%TYPE, cursorObtener out t_cursor);

end pabletoreto;


create or replace package body pabletoreto
as
PROCEDURE ObtenerCampos(p_ID IN BLOGTABLE.ID%TYPE, cursorObtener out t_cursor)
IS
BEGIN
    OPEN cursorObtener FOR
       SELECT ID,NOMBRE,CARGO FROM BLOGTABLE
       WHERE ID = p_ID;
end ObtenerCampos;
end pabletoreto;

 y el código del evento Click del botn Buscar en C#


using (OracleConnection OraConn = Conectar()){
     OracleCommand OraCmd = new OracleCommand();
     OraCmd.Connection = OraConn;
     OraCmd.CommandText = "pabletoreto.ObtenerCampos";
     OraCmd.CommandType = CommandType.StoredProcedure;
     OraCmd.Parameters.Add("p_ID", OracleDbType.Varchar2).Value = txtID.Text;
     OraCmd.Parameters.Add(new OracleParameter("cursorObtener", OracleDbType.RefCursor)).Direction = ParameterDirection.Output;
 
     OracleDataReader dr = OraCmd.ExecuteReader();
           if (dr.HasRows){
                    txtID.Text = Convert.ToString(dr["ID"]);
                    txtNombre.Text = Convert.ToString(dr["NOMBRE"]);
                }}}

Pero si en lugar de utilizar procedimiento almacenado utilizaramos una función que devuelve un Refcursor tendriamos, en primer lugar, que crear la funcion

Related Posts:

  • 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
  • Excepciones Oracle Las excepciones sirven para tratar errores en tiempo de ejecución, así como errores y situaciones definidas por el usuario. Cuando se produce un error, PL/SQL levanta una excepción y pasa el control a la sección EXCEPTIO… 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: 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
  • 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