BIENVENIDOS.

Este Proyecto fue creado a fin de satisfacer las necesidades los usuario, el contenido que se encuentra es muy especifica, se trata de dar una breve pero clara informacion de los temas a tratar.

11 ago 2011

INTRODUCCIÓN

PL SQL
SQL es un lenguaje de consulta para los sistemas de bases de datos relaciónales, pero que no posee la potencia de los lenguajes de programación.
Para abordar el presente tutorial con mínimo de garantias es necesario conocer previamente SQL.
   .
PL/SQL amplia SQL con los elementos caracteristicos de los lenguajes de programación, variables, sentencias de control de flujo, bucles ...
Cuando se desea realizar una aplicación completa para el manejo de una base de datos relacional, resulta necesario utilizar alguna herramienta que soporte la capacidad de consulta del SQL y la versatilidad de los lenguajes de programación tradicionales. PL/SQL es el lenguaje de programación que proporciona Oracle para extender el SQL estándar con otro tipo de instrucciones.

SECUENCIAS

Las secuencias son una solución fácil y elegante al problema de los codigos autogenerados.
LA sintaxis general es la siguiente:

CREATE SEQUENCE <secuence_name>
[MINVALUE <min_val>]
[MAXVALUE <max_val>]
[START WITH <ini_val>]
[INCREMENT BY <inc_val>]
[NOCACHE | CACHE <cache_val>][CYCLE]
[ORDER];

El siguiente ejemplo crea una secuencia SQ_PRODUCTOS.

CREATE SEQUENCE SQ_PRODUCTOS
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20; 

Se puede simplificar la orden, tomando los valores por defecto. El ejemplo anterior quedaría del siguiente modo:

CREATE SEQUENCE SQ_PRODUCTOS;

DECLARACION DE TABLAS


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 tabla PL/SQL
  • Puede incrementar su tamaño dinámicamente.
La sintaxis general para declarar una tabla de PL es la siguiente:

TYPE <nombre_tipo_tabla> IS TABLE OF
<tipo_datos> [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 el cero.

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;

OPERADORES

Tipo de operador Operadores
Operador de asignación := (dos puntos + igual)
Operadores aritméticos + (suma)
- (resta)
* (multiplicación)
/ (división)
** (exponente)
Operadores relacionales o de comparación = (igual a)
<> (distinto de)
< (menor que)
> (mayor que)
>= (mayor o igual a)
<= (menor o igual a)
Operadores lógicos AND (y lógico)
NOT (negacion)
OR (o lógico)
Operador de concatenación ||

DECLARACIÓN DE VARIABLES.

Tipos de Variables Escalares

Los principales tipos de variables escalares en Oracle PL/SQL son los siguientes:
VARCHAR2(tamaño)
NUMBER[(precisión,escala)]
DATE
CHAR(tamaño)
LONG
BOOLEAN
BINARY_INTEGER
  1. variable1 VARCHAR2(50);
  2. variable2 BINARY_INTEGER:=0;
  3. variable3 NUMBER(10,4);

Variables de tipo HOST

Las variables No-PL/SQL o de tipo HOST son variables globales que pueden usarse tanto dentro como fuera de los bloques PL/SQL.
Las referencias a estas variables vienen precedidas por dos puntos (:)
 
  1. VARIABLE total NUMBER(3,2);
  2. :total := 10/2;

Atributo %TYPE

El atributo %TYPE sirve para declarar una variable a partir de otras declaradas previamente, o a partir del tipo de una columna de la base de datos. Es decir, copiar el tipo de otra variable.
El siguiente ejemplo asigna a la variable1 el mismo tipo que el campo de la base de datos.
 
  1. variable1 tabla.campo%TYPE;

EXCEPCIONES PREDEFNIDAS Y DEFINIDAS POR EL USUARIO.

Excepciones predefinidas 
    PL/SQL proporciona un gran número de excepciones predefinidas que permiten controlar las condiciones de error más habituales.
    Las excepciones predefinidas no necesitan ser declaradas. Simplemente se utilizan cuando estas son lanzadas por algún error determinado.
Excepciones definidas por el usuario 
    PL/SQL permite al usuario definir sus propias excepciones, las que deberán ser declaradas y lanzadas explícitamente utilizando la sentencia RAISE.
    Las excepciones deben ser declaradas en el segmento DECLARE de un bloque, subprograma o paquete. Se declara una excepción como cualquier otra variable, asignandole el tipo EXCEPTION. Las mismas reglas de alcance aplican tanto sobre variables como sobre las excepciones.



DECLARE
MyExcepcion EXCEPTION;
BEGIN
  -- Ejecucion
EXCEPTION
  -- Excepcion
END;  -- Declaraciones












EXCEPCIONES.

Las excepciones sirven para tratar errores en tiempo de ejecucu¡ion, asi como errores y situaciones definifdas por el usuario. Caundo se produce un error. PL/SQL levanta un excepcion y pasa el control a la seccion  EXCEPTION  correspondiente del bloque PL.

DECLARE -- Declaraciones
BEGIN
  -- Ejecucion
EXCEPTION
  -- Excepcion
END;
    Como ya hemos dicho cuando ocurre un error, se ejecuta el bloque EXCEPTION, transfiriéndose el control a las sentencias del bloque. Una vez finalizada la ejecución del bloque de EXCEPTION no se continua ejecutando el bloque anterior.
    Si existe un bloque de excepcion apropiado para el tipo de excepción se ejecuta dicho bloque. Si no existe un bloque de control de excepciones adecuado al tipo de excepcion se ejecutará el bloque de excepcion WHEN OTHERS THEN (si existe!). WHEN OTHERS debe ser el último manejador de excepciones.
    Las excepciones pueden ser definidas en forma interna o explícitamente por el usuario. Ejemplos de excepciones definidas en forma interna son la división por cero y la falta de memoria en tiempo de ejecución. Estas mismas condiciones excepcionales tienen sus propio tipos y pueden ser referenciadas por ellos: ZERO_DIVIDE y STORAGE_ERROR.