Documente Academic
Documente Profesional
Documente Cultură
PL-
PL-SQL
QUE ES PL/SQL?
El PL/SQL (Procedural Language/SQL)
es, como su nombre lo indica, un
lenguaje que amplía la funcionalidad de
SQL añadiendo estructuras que también
pueden encontrarse en otros lenguajes
procedimentales de tercera generación.
SQL
IF...THEN
SQL Servidor de
Aplicación ELSE base de
cliente SQL datos
END IF; ORACLE
SQL
DECLARE – Opcional
◦ Variables, constantes, cursores
◦ Excepciones definidas por el usuario
BEGIN – Obligatorio
◦ Sentencias SQL
◦ Sentencias PL/SQL de control
EXCEPTION – Opcional
◦ Acciones que se realizan cuando ocurre un
error
END; – obligatorio
Son guardados en la BD o en la
aplicación
Facultad Politécnica Base de Datos II 9
Componentes del Subprograma
CABECERA– opcional
– Nombre del subprograma, tipo y argumentos
SECCION DECLARATIVA – opcional
– Identificadores locales
SECCION EJECECUTABLE – obligatorio
– Sentencias SQL
– Sentencias de control PL/SQL
MANEJO DE EXEPCION – opcional
– Acciones que se ejecutan cuando hay error
FINAL (END); – obligatorio
Procedimiento
Bloque
Almacenado/
Anónimo
Función
DECLARE
Procedimiento
Trigger de BEGIN Funciones
Aplicaciones
De Aplicaciones
EXCEPTION
END;
Trigger de
Paquetes
Base de Datos
Pautas
◦ Nombre las variables de acuerdo a las
convenciones
◦ Inicialice las constantes y variables
designadas como NOT NULL
◦ Inicialice identificadores usando al operador
de la asignación (:=) o por la palabra
reservada DEFAULT.
◦ Declare un identificador por línea
v_genero CHAR(1);
v_contador BINARY_INTEGER := 0;
v_total_sal NUMBER(9,2) := 0;
v_fecha_asiento DATE := SYSDATE + 7;
v_fecha_inicio DATE DEFAULT SYSDATE;
c_tasa CONSTANT NUMBER(3,2) := 8.25;
v_valido BOOLEAN NOT NULL := TRUE;
ciudad VARCHAR2(20) := 'Luque‘f
ó bien
. . .
IF v_fecha_envio - v_fecha_orden < 5 THEN
v_bandera := 'Acceptable';
ELSE
v_bandera := 'Unacceptable';
END IF;
CASE variable_seleccion
WHEN valor1 THEN
expresion1
WHEN valor2 THEN
expresion2
ELSE
expresion3
END CASE;
CASE v_rango
WHEN 1 THEN
v_comision := v_total*0,10;
WHEN 2 THEN
v_comision := v_total*0,5;
ELSE
v_comision := v_total
END CASE;
RETURN v_comision;
CASE
WHEN condicion1 THEN
expresion1
WHEN condicion2 THEN
expresion2
ELSE
expresion3
END CASE;
CASE
WHEN (v_cal between 0 and 10) THEN
v_comision := v_total*0,10;
WHEN (v_cal between 11 and 20) THEN
v_comision := v_total*0,5;
ELSE
v_comision := v_total
END CASE;
NOT
TRUE FALSE
FALSE TRUE
NULL NULL
BEGIN
. . .
WHILE v_contador <= 10 LOOP
INSERT INTO b_mayor (id_mayor, anio, mes )
VALUES (v_contador, v_anio, v_mes);
v_contador := v_contador + 1;
END LOOP;
No existe la categoría
Facultad Politécnica Base de Datos II 49
Manejo de Errores (Excepciones)
Como se mencionaba, el SELECT debe recuperar
una única fila cuando se incluye en PL/SQL
Se genera un error cuando no se recupera
ninguna fila, o cuando se recuperan más de una
fila
Condición Excepción
La sentencia SELECT TOO_MANY_ROWS (Error
recupera más de una fila de ORACLE ORA-01422 )