Alejandría - La Biblioteca¿Quieres un blog como este?. Date de alta aquí.
Volver a la portada
Portada
Lista completa del contenido
Búsqueda
Enviar un e-mail al buzón de sugerencias.
Consúltenos
 Portada 
 Filosofía / Ensayos 
 Aventuras 
 Ciencia Ficción 
 Técnicos 
 Infantil 
 Esotérico 
 Poesía 
 » Técnicos 
Anterior: DDL (Data Definition Language) Volver al principal : SQL y PL/SQL

PL/SQL

PL/SQL

Hasta el momento se han visto distintos comandos para crear scripts SQL, sin embargo, estos tienen limitantes importantes en cuanto a la secuencia de ejecución de instrucciones, el uso de variables, la modularidad y la gestión o manejo de posibles errores.

Para poder solventar estas limitantes se incorpora en el servidor una gestor PL/SQL, al igual que en las diferentes herramientas. Este permite el manejo de variables, estructura modular (procedimientos y funciones), estructuras de control, manejo de excepciones y una integración con el entorno Oracle.

Los programas creados con PL/SQL pueden ser almacenados en la base de datos como cualquier otro objeto, de esta forma se facilita a los usuarios el acceso a estos programas. De igual forma el lenguaje permite la incorporación disparadores en el ámbito de base de datos, que permiten reflejar de mejor manera las reglas del negocio e implementar elementos de auditoría en la base de datos.

Bloques PL/SQL DECLARE-BEGIN-END

El DECLARE es un comando que limita la creación de bloques dentro de PL/SQL, como se presenta a continuación:

BEGIN
...
<<inner>>
[DECLARE
...]
BEGIN
...
END inner;
...
[EXEPTION
...]
END;

Véase que se permite el anidamiento de bloques. Ahora bien el uso del DECLARE para la creación de bloques es necesario cuando es necesario definir variables o bien cursores a ser utilizados en el cuero de ejecución.
El BEGIN y END fija el primero el inicio del bloque (cuando no está el DECLARE) y el segundo el fin de dicho BLOQUE.
En el caso de bloques anidados el bloque de adentro puede referenciar variables del bloque externo, pero no a la inversa.
Ahora se presenta un ejemplo en donde se borra el departamento 20, pero antes se crea un departamento provisional, al que asigna los empleados del departamento 20.

DECLARE
  v_num_empleados NUMBER(2);
BEGIN
  INSERT INTO dept
           VALUES ( 99, 'PROVISIONAL', NULL );
  UPDATE emp
  SET deptno = 99
  WHERE deptno = 20;

-- se asigna el total de empleados cambiados de
-- departamento
  v_num_empleados := SQL%ROWCOUNT;
  DELETE FROM dept
  WHERE deptno = 20;
-- para que este mensaje se muestre en SQL*PLUS
-- asegúrese de ejecutar previamente
-- SET SERVEROUTPUT ON
  Dbms_output.put_line ( v_num_empleados || ' empleados ubicados en PROVISIONAL.' );
EXCEPTION
  WHEN OTHERS THEN -- en cualquier error ejecutar
   ROLLBACK;
   RAISE_APPLICATION_ERROR ( -20000, 'Error en la aplicación.' );
END;

Redacción

Anterior: DDL (Data Definition Language) Volver al principal : SQL y PL/SQL
© 2008Powered by NIDAVAL