Vamos a mostrar cómo podemos obtener los datos de un cursor
de Oracle a nuestra aplicación .Net llamando desde nuestra aplicación a un
procedimiento almacenado de Oracle.
Lo primero será crear el procedimiento almacenado para ello he
creado el paquete.
Primero será declarar nuestro nuestro nuevo tipo de dato en
el paquete que será un cursor dinámico.
TYPE RstCur IS REF CURSOR;
Ahora la especificación del paquete declararemos el
procedimiento. Este procedimiento tendrá como argumento de entrada un nombre y
como salida un cursor dinámico. El procedimiento devolverá todos los residentes
con el nombre introducido.
La declaración del procedimiento quedaría así:
CREATE OR REPLACE PACKAGE DAVID.PG_RESIDENTES AS
/******************************************************************************
NAME:
PG_RESIDENTES
PURPOSE:
REVISIONS:
Ver
Date Author Description
---------
---------- --------------- ------------------------------------
1.0
31/12/2012 David 1. Created this package.
******************************************************************************/
TYPE RstCur IS REF CURSOR;
PROCEDURE ObtenResidente(pNombre IN VARCHAR2,
MiCursor OUT RstCur);
END PG_RESIDENTES;
/
Y el cuerpo del
procedimiento así.
CREATE OR REPLACE PACKAGE BODY DAVID.PG_RESIDENTES AS
/******************************************************************************
NAME:
PG_RESIDENTES
PURPOSE:
REVISIONS:
Ver
Date Author Description
---------
---------- --------------- ------------------------------------
1.0
31/12/2012 David 1. Created this package body.
******************************************************************************/
PROCEDURE ObtenResidente(pNombre IN VARCHAR2,
MiCursor OUT RstCur)
IS
BEGIN
OPEN MiCursor FOR
SELECT DNI, NOMBRE, APELLIDO1 AS , APELLIDO2
FROM RESIDENTES
WHERE UPPER(RESIDENTES.NOMBRE) = UPPER(pNombre);
END ObtenResidente;
END PG_RESIDENTES;
/
Ahora que ya tenemos el procedimiento almacenado creado
vamos a crear una pequeña aplicación en
.Net para llamarlo y mostrar los datos.
Ahora la lógica del botón
buscar.
private void button1_Click(object
sender, EventArgs e)
{
OracleCommand comando;
OracleDataAdapter Da;
DataSet MyDataSet = new DataSet();
comando = new OracleCommand("PG_RESIDENTES.ObtenResidente",
conn);
comando.CommandType = CommandType.StoredProcedure;
//
Abrimos conexión
if
(conn.State == 0) conn.Open();
OracleCommandBuilder.DeriveParameters(comando);
// Le pasamos los parametros
comando.Parameters[0].Value = txtNombre.Text; //
Nombre
comando.Parameters[1].Value = null;
// Ejecutamos y llenamo Ds
Da = new OracleDataAdapter(comando);
Da.Fill(MyDataSet);
// Cerrar conex
conn.Close();
// Añadimos los datos al datagridview
dataGridView1.DataSource = MyDataSet.Tables[0];
}
Capturas de la aplicación funcionando.
No hay comentarios:
Publicar un comentario