Personal

Páginas: 29 (7028 palabras) Publicado: 23 de enero de 2013
Oracle PL/SQL

Autor:

Eduardo Bottini
ebottini@c-s-i.com.ar

Prohibida la reproducción total o parcial sin permiso explícito del autor.

Oracle PL/SQL – Variables de tipo Cursor.
Oracle nos permite utilizar dentro de sus procedimientos almacenados variables que referencian a cursores de datos. Estas variables son punteros y llevan el nombre de Ref Cursor. Delphi, por su parte, accedea éstas en forma nativa mediante el tipo de dato ftCursor.
A partir de este número de Mundo Delphi comenzamos con una serie de artículos que tratan sobre las características más potentes del lenguaje PL/SQL de Oracle. En esta edición, donde ahondaremos en los detalles del tema del título principal, veremos también algunos de estos atributos tales como el manejo de excepciones y la programaciónutilizando paquetes (packages), temas éstos que profundizaremos en próximas entregas.

El tipo Ref Cursor
Las variables de tipo cursor son referencias a cursores, más precisamente son punteros a un área de trabajo donde Oracle almacena los datos que resultan de una selección de múltiples registros. Estos punteros almacenan la dirección de memoria del objeto apuntado (y no el objeto en sí, talcomo lo hace un cursor explícito) y por lo tanto pueden pasarse como parámetros de entrada/salida entre procedimientos almacenados o funciones de PL/SQL residentes en el servidor, y programas clientes escritos en otros lenguajes como Delphi, Pro*C, etc. Este pasaje de parámetros puede realizarse en ambos sentidos (Cliente/Servidor/Cliente) a fin de poder trabajar en cualquiera de estos entornosaccediendo simultáneamente al mismo área de trabajo donde residen los datos de la consulta realizada. Esto equivale a decir que podemos compartir entre procedimientos y funciones escritas en diferentes lenguajes y ejecutándose en diferentes máquinas el resultado de una consulta residente en el servidor, sin importar quién la haya generado. Para crear este tipo de variables debe definirse primero untipo Ref Cursor y luego declarar la variable de este tipo. Por ejemplo:
TYPE tRc_tipo IS REF CURSOR; Res tRc_tipo;

En este pequeño ejemplo hemos declarado Res como una variable de tipo cursor. En PL/SQL, cualquier puntero posee el tipo de dato REF (que es la abreviatura de Reference) y la clase de objeto a la que apunta. De allí que un Ref Cursor sea un puntero a un Cursor.

Tipos de Ref Cursorsegún la clase de resultado al que referencian
Dependiendo de la especificación o no del formato de datos a los que apunta una variable de tipo cursor, se las puede clasificar en 2 tipos: Tipo restrictivo: Se debe especificar un tipo de resultado asociado al formato del registro que devolverá el Select. En este caso el compilador de PL/SQL controla que el resultado de la consulta coincida con eltipo de dato asociado. Por ejemplo, si asociamos el resultado con un %RowType (tipo de registro que representa a una fila de una tabla) sólo podremos utilizar la variable cursor con una consulta que devuelva un registro exactamente igual a ese %RowType. Tipo no Restrictivo: A partir de la versión 7.3 de Oracle no es necesario especificar un tipo de resultado, pudiéndose de esta manera asociar unpuntero a cualquier clase de consulta. Esta forma es mucho más flexible ya que podremos declarar los punteros una vez y utilizarlos en cualquier momento para manipular cualquier consulta. Al tipo de resultado apuntando por un Ref Cursor no restrictivo se lo denomina Variant Record.

Ejemplos de definición, declaración y uso de Ref Cursor
Para todos los ejemplos que veremos en este artículoutilizaremos un “modelo de datos” de dos tablas: Libros y Autores Veamos a continuación el esquema de estas tablas en formato de comandos de creación de las mismas junto con sus índices, llaves primarias y foráneas.

1

Oracle PL/SQL – Variables de tipo Cursor.
CREATE TABLE AUTORES ( CODIGO_AUTOR NUMBER(5) NOT NULL, NOMBRE VARCHAR2(100) NOT NULL, FECHA_NACIMIENTO DATE NULL, PRIMARY KEY...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Personalidad
  • Personalidad
  • Personalidad
  • Personalidad
  • Personalidad
  • Personalidad
  • Personal
  • La personalidad

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS