Dispone de estructuras de programación similares a las de la mayoría de los lenguajes de programación.
Objetivo: Interactuar con la B.D.
PL/SQL Estructura Bloques Anónimos
[DECLARE] Define objetos PL/SQL que serán utilizados dentro del mismo bloque
BEGIN Sentencias Ejecutables
[EXCEPTION] Qué hacer si la acción ejecutada causa error
END;
PL/SQL Estructura de Procedimiento
PROCEDURE nombre IS Sección Declarativa
BEGIN Sección Ejecutable
[EXCEPTION] Sección de Excepciones
END;
PL/SQL Estructura de Función
FUNCTION nombre RETURN tipo_dato IS Sección Declarativa
BEGIN Sección Ejecutable
[EXCEPTION] Sección de Excepciones
END;
PL/SQL Declaración de Variables
Reglas para nombres:
Dos variables pueden tener el mismo nombre, si están en bloques diferentes.
El nombre de la variable (identificador) no debería ser el mismo que el de una columna de una tabla utilizada en el bloque.
PL/SQL Asignación e Inicialización de Variables
Asignación:
Inicialización:
Por defecto, todas las variables se inicializan a NULL.
PL/SQL Tipos de Variables
ESCALARES
BOOLEANAS
COMPUESTAS
LOB
DE ENLACE (BIND)
PL/SQL Variables Escalares
VARCHAR2 (longitud_máxima)
NUMBER [(precisión, escala)]
DATE
CHAR [(longitud_máxima)]
LONG
LONG RAW
BOOLEAN
BINARY_INTEGER
PL/SQL Atributo %TYPE
Permite declarar una variable basada en:
Otras variables previamente declaradas
La definición de una columna de la base de datos
Preceder de %TYPE por:
La tabla y la columna de la base de datos
El nombre de la variable definida con anterioridad
Ejemplo: v_ename emp.ename%TYPE;
PL/SQL Variables BOOLEANAS
A una variable Boolean sólo se le pueden asignar los valores: TRUE, FALSE o NULL.
Estas variables están conectadas por los operadores lógicos AND, OR y NOT.
PL/SQL Tipos de Datos Compuestos
Tipos:
REGISTROS PL/SQL
TABLAS PL/SQL
Contienen componentes internos
PL/SQL Creación de un Registro
Sintaxis:
Donde declaración_campo significa:
PL/SQL Ejemplo de Registro PL/SQL
Declarar un registro para almacenar el número de empleado, nombre, trabajo y sueldo de un nuevo empleado:
Los componentes individuales del registro se referenciarán de forma cualificada; en este ejemplo:
PL/SQL El Atributo %ROWTYPE
Define un registro con la estructura de la tabla o vista de la B.D.
Los campos del registro toman sus nombres y tipos de datos de las columnas de la vista o tabla.
Ejemplo: DECLARE registro_empleado emp%ROWTYPE;
PL/SQL Ventajas de %ROWTYPE
El número y los tipos de datos de las columnas de la tabla pueden no ser conocidos.
Simplifica la programación al no tener que definir explícitamente los campos y tipos del registro.
Es útil para realizar recuperaciones de filas con la sentencia SELECT:
PL/SQL Tablas PL/SQL
Cuentan con dos componentes:
TIPO DE DATOS DE CLAVE PRIMARIA BINARY_INTEGER
COLUMNA DE TIPO DE DATOS ESCALARES O DE REGISTRO.
Aumentan dinámicamente porque no tienen restricciones.
Se almacenan en memoria.
PL/SQL Creación de Tablas PL/SQL
Sintaxis:
Ejemplo:
PL/SQL Creación de Tablas PL/SQL
PL/SQL Variables LOB
Permiten almacenar bloques de datos no estructurados, como pantallas de texto, imágenes gráficas, vídeo clips, y sonido, de hasta 4 Gb. de tamaño.
CLOB
Character Large Object. Se utiliza para almacenar bloques grandes de datos de caracteres.
BLOB
Binary Large Object. Se utiliza para almacenar objetos binarios grandes en la B.D.
BFILE
Binary File. Se utiliza para almacenar objetos binarios grandes en archivos del sistema operativo, fuera de la B.D.
NCLOB
National Language Character Large Object. Se utiliza para almacenar en la B.D. bloques grandes de datos NCHAR de un byte único o multi-bytes de ancho fijo.
PL/SQL Variables de Enlace (Bind)
Son variables de SQL*Plus.
Las pueden referenciar bloques de PL/SQL mediante el uso del ampersand (&).
Ejemplo:
S.Q.L. Ejercicios
Basados en las tablas emp y dept del usuario Scott de la database Oracle.
Crear el modelo de datos necesario para representar la actividad de un Videoclub.
Mostrar los nombres de los empleados del deptno 10, junto con los meses que llevan trabajando en la empresa.
Extraer el nombre de empleado y su fecha de alta en la empresa con formato Dia ( letras) , mes ( letras ), año, horas, minutos y segundos.
Mostrar el nº de empleado, job, nombre, así como la comisión. Si no tiene comisión, poner el texto Sin Comisión. La información debe de salir ordenada por nº de empleado en descendente.
Nº de empleado con el salario mas alto.
Nombre de deptno y Nombre de empleado que mas tarde entró en la empresa, para cada uno de los departamentos.
Incrementar un 20% el salario de todos los empleados que no son de Bostón.
Borrar los empleados cuyo nombre no comienza por A , que no son Analistas y que trabajan en New York.
Nombre de empleado, suma de salario y comisión para los empleados cuyo salario es superior a la media de su departamento.