Sie sind auf Seite 1von 18

Rene Ahumada (rene_a666@hotmail.

com)
Cristian Orellana (cristian_ucm@hotmail.com)
Objetivos:
Registros PL/SQL
Un registro es un grupo de datos relacionados,
almacenados en campos, cada uno de los cuales tiene
su propio nombre y tipo y que se tratan como una sola
unidad lgica.
Los campos de un registro pueden ser inicializados y
pueden ser definidos como NOT NULL. Aquellos
campos que no sean inicializados explcitamente, se
inicializarn a NULL.

Los registros pueden estar anidados.
Objetivos:
Tipos de datos compuestos:

RECORD

TABLE

Nested TABLE

VARRAY
RECORD
Se utiliza cuando se quieren relacionar datos de distintos tipos de forma
que se utilicen como una unidad lgica.

Declaracin del tipo registro:

Sintaxis:
TYPE nombre_tipo_reg IS RECORD
(declaracin_campo [,declaracin_campo]...);

Donde declaracin_campo tiene la forma:

nombre_campo
{tipo_campo | variable%TYPE | table.columns%TYPE | table%ROWTYPE }
[ [NOT NULL] {:= | DEFAULT} expresin]

Declaracin de una variable del tipo registro:
id_variable nombre_tipo_reg;
RECORD
Acceso a un campo de una variable de tipo registro
id_variable.nombre_campo

Asignacin de valores
Puede asignarse un valor directamente a un campo:
Id.campo := 3;

Declaracin de registros con el atributo %ROWTYPE
Se puede declarar un registro basndose en una coleccin de
columnas de una tabla o una vista de la base de datos mediante el
atributo %ROWTYPE.

RECORD
Por ejemplo, si tengo una tabla empleado declarada como:

CREATE TABLE empleado(
id number,
nombre char(10),
apellido char(20),
direccin char(30));

Puedo declarar una variable de tipo registro como:

DECLARE
reg_emp empleado%ROWTYPE;

Lo cual significa que el registro reg_emp tendr la siguiente estructura:
id number,
nombre char(10),
apellido char(20),
direccin char(30)
Tablas PL/SQL
Es similar a un array.

Tiene dos componentes: Una clave primaria de tipo BINARY_INTEGER
que permite indexar en la tabla y una columna de escalares o registros
que contiene los elementos de la tabla.

Puede incrementar su tamao dinmicamente.
Tablas PL/SQL
Es similar a un array.

Tiene dos componentes: Una clave primaria de tipo
BINARY_INTEGER que permite indexar en la tabla y
una columna de escalares o registros que contiene los
elementos de la tabla.

Puede incrementar su tamao dinmicamente.
Tablas PL/SQL
Creacin de una tabla

Sintaxis:
TYPE nombre_tipo_tabla IS TABLE OF
{tipo_columna | variable%TYPE | tabla.columna%TYPE}[NOT NULL]
INDEX BY BINARY_INTEGER ;

Declaracin de una variable del tipo:
nombre_var nombre_tipo_tabla;

Referenciar un elemento de la tabla

Sintaxis:
Pl/sql_nombre_tabla(valor_primary_key);

El rango de binary integer es 2147483647.. 2147483647.

Tablas PL/SQL de registros
Es posible declarar elementos de una tabla PL/SQL como de tipo registro.

Para referenciar un elemento se har de la siguiente forma:
nombre_tabla(ndice).nombre_campo

Funciones para el manejo de Tablas PL/SQL
Funcin EXISTS(i). Utilizada para saber si en un cierto ndice hay
almacenado un valor. Devolver TRUE si en el ndice i hay un
valor.

Funcin COUNT. Devuelve el nmero de elementos de la tabla
PL/SQL.

Funcin FIRST. Devuelve el menor ndice de la tabla. NULL si est
vaca.

Funcin LAST. Devuelve el mayor ndice de la tabla. NULL si est
vaca.
Funciones para el manejo de Tablas PL/SQL
Funcin PRIOR (n). Devuelve el nmero del ndice anterior a n en
la tabla.

Funcin NEXT (n). Devuelve el nmero del ndice posterior a n en
la tabla.

Funcin TRIM. Borra un elemento del final de la tabla PL/SQL.
TRIM(n) borra n elementos del final de la tabla PL/SQL.

Funcin DELETE. Borra todos los elementos de la tabla PL/SQL.
DELETE(n) borra el correspondiente al ndice n. DELETE(m,n)
borra los elementos entre m y n.
Tablas anidadas (Nested tables)
Un tipo coleccin es aquel que maneja varias variables como una unidad.
La versin 2 de PL/SQL slo tena un tipo de dato coleccin, las tablas
PL/SQL vistas anteriormente.

Las tablas anidadas y los varrays, pueden interpretarse como un tipo de
objeto con atributos y mtodos.

Las tablas anidadas aaden funcionalidad a las indexadas al aadir
mtodos de coleccin adicionales y la capacidad de almacenar tablas
anidadas en una tabla de la base de datos.

Aparte de esto, la funcionalidad bsica de una tabla anidada es la misma
que la de una tabla PL/SQL
Tablas anidadas (Nested tables)
Sintaxis

TYPE nombre_tabla IS TABLE OF tipo_tabla [NOT NULL];

La nica diferencia con la declaracin de una tabla indexada es que
ahora no aparece la clusula INDEX BY BINARY_INTEGER.

Inicializacin de una tabla

Para inicializar una tabla anidada hay que utilizar el constructor
(igual que se hace con los objetos). Este constructor tendr el
mismo nombre que la tabla anidada.

A continuacin podrn ponerse los valores con los que queramos
inicializar o nada (en cuyo caso se inicializa a una tabla sin elementos,
que es diferente que una tabla a NULL).
Tablas anidadas (Nested tables)
Tablas anidadas (Nested tables)
La salida ser:

Valor 1 de var_1: 123
Valor 1 de var_2: 1

var_tabla_3 NO es NULL
var_tabla_4 SI es NULL
Tablas anidadas (Nested tables)
Claves en la inicializacin

Cuando se inicializa una tabla utilizando el constructor, los
elementos de la tabla se numeran secuencialmente desde 1 hasta el
nmero de elementos especificado en la llamada al constructor. Es
posible eliminar un elemento mediante el uso de DELETE.

En caso de borrado en una tabla anidada de la base de datos, las
claves se renumeran para seguir siendo secuenciales.

Tablas anidadas (Nested tables)
La salida ser:
Nro elem de var_tabla_2: 4
Primer elem: 1
ltimo elem: 4

Das könnte Ihnen auch gefallen