Publicidad

ASP.NET, ejecutar un package de Oracle desde ASP.NET


Por Alex el 22/01/2006 , Comentar el artículo

Comparte este artículo:        




Ejecutar un package y llenar un DataSet con el resultado viene a ser lo mismo que ejecutar un Stored Procedure de SQL Server. En el ejemplo veréis que solo cambia el nombre de “stored procedure”, el procedure dentro del package que vais a ejecutar y el proveedor de acceso a datos que en lugar de utilizar SqlClient utilizaremos Oracle.DataAccess.Client.


Para empezar con el ejemplo vamos a crear una tabla en Oracle y un package que nos devuelva un listado de esta tabla. La tabla con mi habitual facilidad de palabras la he llamado “PRUEBA” y éste es el código para crearla:

create table PRUEBAS
(
  IDPRUEBA NUMBER,
  NOMBRE VARCHAR2(20),
  DESCRIP VARCHAR2(200)
)
tablespace SYSTEM
  pctfree 10
  pctused 40
  initrans 1
  maxtrans 255
  storage
  (
   initial 64K
   minextents 1
   maxextents unlimited
  );

Ejecutando este script, por ejemplo desde pl/sql developer, creareis la tabla.

El siguiente script es el del package:

create or replace package Pruebas_pkg is

  -- Public type declarations
  type t_cursor is REF CURSOR;

  procedure ListarDatoPruebas(o_cursor in out t_cursor);

end Pruebas_pkg;

Y el body del package:

create or replace package body Pruebas_pkg is

  procedure ListarDatoPruebas(o_cursor in out t_cursor)
  is

  begin
   OPEN o_cursor FOR
   Select IDPrueba, Nombre, descrip From PRUEBAS Order by Nombre;

  end ListarDatoPruebas;
end Pruebas_pkg;

Una vez tenemos el oracle preparado desde visual Studio crearemos el código para llamar a este package.

Para ésto creamos una nueva página aspx e insertamos un control DataGrid, añadimos en referencias el proveedor de datos de oracle System.Data.OracleClient, después en la página aspx también añadimos la siguiente referencia:

using Oracle.DataAccess.Client;

Y ponemos el siguiente código dentro del evento Page_Load:

Ponemos la cadena de connexion al oracle.

string strConnectionString ="User Id=SYSTEM;Password=pass;Data Source=PRUEBAS";

Cramos una connexion a oracle con la cadena de conexión definida anteriormente

OracleConnection oraconn = new OracleConnection(strConnectionString);

Abrimos la conexión

oraconn.Open();

Creamos un objeto command para ejecutar el procedure del package.

OracleCommand oracmd = new OracleCommand();

Añadimos un parámetro de salida, la propiedad, ParameterDirection.Output, nos va a definir que el parámetro es de salida

oracmd.Parameters.Add("o_cursor", OracleDbType.RefCursor, ParameterDirection.Output);

Asignamos el package y procedure a ejecutar. Si dentro de este package hubieran más procedures seleccionaríamos el que queremos ejecutar cambiando el nombre detrás del punto, Pruebas_pkg.Nombre_del_procedure.

oracmd.CommandText = "Pruebas_pkg.ListarDatoPruebas";

Definimos que el tipo de comando a ejecutar es un stored procedure.

oracmd.CommandType = CommandType.StoredProcedure;

Y asignamos la conexión que previamente hemos definido y abierto.

oracmd.Connection = oraconn;

Por último, creamos un DataAdapter que asignaremos a un DataSet y éste al DataGrid para que se muestren los datos por pantalla.

OracleDataAdapter da = new OracleDataAdapter(oracmd);
DataSet ds = new DataSet();
da.Fill(ds);
DataGrid1.DataSource = ds;
DataGrid1.DataBind();

Y finalmente solo nos queda cerrar la conexión.

oraconn.Close();

Como véeis la forma es similar que si ejecutamos un procedimiento almacenado de SQL Server.

Saludos
Alex


Si te ha gustado el artículo compartelo en:        


Publicidad

También puede interesarte:

Instalar .NET Core en Ubuntu

Instalar .NET Core en Ubuntu

Por Alex, el 07/02/2020

Limpiar datos de un combobox en winforms.

Limpiar datos de un combobox en winforms.

Por Alex, el 23/03/2010

Crear, copiar y borrar bases de datos SQL Server desde c#.

Crear, copiar y borrar bases de datos SQL Server desde c#.

Por Alex, el 07/03/2010

Escribir en un excel desde c#.

Escribir en un excel desde c#.

Por Alex, el 04/03/2010

Llenar un Repeater o DataList con un DataTable.

Llenar un Repeater o DataList con un DataTable.

Por Alex, el 29/12/2008

El evento SelectedIndexChanged no funciona

El evento SelectedIndexChanged no funciona

Por Alex, el 26/12/2008


Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.