fisica

Páginas: 14 (3343 palabras) Publicado: 13 de abril de 2013
Tablas PL/SQL
Declaración de tablas de PL/SQL
    Las tablas de PL/SQL son tipos de datos que nos permiten almacenar varios valores del mismo tipo de datos.
    Una tabla PL/SQL :
Es similar a un array
Tiene dos componenetes: Un índice de tipo BINARY_INTEGER que permite acceder a los elementos en la tabla PL/SQL y una columna de escalares o registros que contiene los valores de la tablaPL/SQL
Puede incrementar su tamaño dinámicamente.
    La sintaxis general para declarar una tabla de PL es la siguiente:

TYPE IS TABLE OF
[NOT NULL]
INDEX BY BINARY_INTEGER ;
    Una vez que hemos definido el tipo, podemos declarar variables y asignarle valores.

DECLARE
/* Definimos el tipo PAISES como tabla PL/SQL */
TYPE PAISES IS TABLE OF NUMBER INDEX BY BINARY_INTEGER ;/* Declaramos una variable del tipo PAISES */
tPAISES PAISES;
BEGIN
tPAISES(1) := 1;
tPAISES(2) := 2;
tPAISES(3) := 3;
END;

     No es posible inicializar las tablas en la inicialización.
     El rango de binary integer es –2147483647.. 2147483647, por lo tanto el índice puede ser negativo, lo cual indica que el índice del primer valor no tiene que ser necesariamente elcero.

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

DECLARE

TYPE PAIS IS RECORD
(
CO_PAIS NUMBER NOT NULL ,
DESCRIPCION VARCHAR2(50),
CONTINENTE VARCHAR2(20)
);
TYPE PAISES IS TABLE OF PAIS INDEX BY BINARY_INTEGER ;
tPAISES PAISES;
BEGIN

tPAISES(1).CO_PAIS := 27;
tPAISES(1).DESCRIPCION:= 'ITALIA';
tPAISES(1).CONTINENTE := 'EUROPA';

END;

Funciones para el manejo de tablas PL/SQL
    Cuando trabajamos con tablas de PL podemos utilizar las siguientes funciones:
FIRST. Devuelve el menor índice de la tabla. NULL si está vacía.
LAST. Devuelve el mayor índice de la tabla. NULL si está vacía.
    El siguiente ejemplo muestra el uso de FIRST y LAST : 

DECLARE
 TYPEARR_CIUDADES IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
 misCiudades ARR_CIUDADES;
BEGIN
     misCiudades(1) := 'MADRID';
     misCiudades(2) := 'BILBAO';
     misCiudades(3) := 'MALAGA';
    
     FOR i IN misCiudades.FIRST..misCiudades.LAST
     LOOP
         dbms_output.put_line(misCiudades(i));
     END LOOP;
END;
EXISTS(i). Utilizada para saber si en un cierto índice hayalmacenado un valor. Devolverá TRUE si en el índice i hay un valor.

DECLARE
 TYPE ARR_CIUDADES IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
 misCiudades ARR_CIUDADES;
BEGIN
     misCiudades(1) := 'MADRID';    
     misCiudades(3) := 'MALAGA';
    
     FOR i IN misCiudades.FIRST..misCiudades.LAST
     LOOP
         IF misCiudades.EXISTS(i) THEN
          dbms_output.put_line(misCiudades(i));
         ELSE
           dbms_output.put_line('El elemento no existe:'||TO_CHAR(i));
         END IF; 
     END LOOP;
END;
COUNT. Devuelve el número de elementos de la tabla PL/SQL.

DECLARE
 TYPE ARR_CIUDADES IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
 misCiudades ARR_CIUDADES;
BEGIN
     misCiudades(1) := 'MADRID';    
     misCiudades(3) := 'MALAGA';
     /*Devuelve 2, ya que solo hay dos elementos con valor */
     dbms_output.put_line(
'El número de elementos es:'||misCiudades.COUNT);   
END;
PRIOR (n). Devuelve el número del índice anterior a n en la tabla.

DECLARE
  TYPE ARR_CIUDADES IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
  misCiudades ARR_CIUDADES;
BEGIN
  misCiudades(1) := 'MADRID';
  misCiudades(3) := 'MALAGA';  /* Devuelve 1, ya que el elemento 2 no existe */
  dbms_output.put_line(
'El elemento previo a 3 es:' || misCiudades.PRIOR(3));
END;
NEXT (n). Devuelve el número del índice posterior a n en la tabla.

DECLARE
  TYPE ARR_CIUDADES IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
  misCiudades ARR_CIUDADES;
BEGIN
  misCiudades(1) := 'MADRID';
  misCiudades(3) := 'MALAGA';
  /*...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Fisica
  • Fisica
  • Fisica
  • Fisica
  • La fisica
  • Fisica
  • Fisica
  • Física

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS