Lic. Vladimir Cotaquispe Gutierrez PROGRAMACIÓN PL/SQL I-1 Copyright © 2008, Oracle. All rights reserved. INTRODUCCIÓN PL/SQL: Lenguaje de programación procedimental estructurado en bloques que amplía el lenguaje estándar SQL. Permite: • Manipular datos de una BD Oracle. • Usar técnicas procedurales (bucles, ...) • Permite controlar las filas de una consulta una a una • Controlar errores (excepciones) definidas por el usuario o propios de Oracle (predefinidos) • Disparadores No diferencia las minúsculas de las mayúsculas CLIENTE == cliente I-2 Copyright © 2008, Oracle. All rights reserved. BLOQUES Las únicas instrucciones permitidas dentro de un bloque son: INSERT, UPDATE, DELETE Y SELECT + manipulación de datos + control de transacciones. • La anidación de bloques se realiza entre las etiquetas BEGIN Y EXCEPTION y sólo se tiene una definición de variables. • Instrucciones no permitidas son: DROP, CREATE, ALTER, … • Los comentarios se ponen: /* Comentarios */ • No distingue mayúsculas y minúsculas I-3 Copyright © 2008, Oracle. All rights reserved. Estructura de un bloque PL/SQL I-4 Copyright © 2008, Oracle. All rights reserved. Estructura de un bloque PL/SQL I-5 Copyright © 2008, Oracle. All rights reserved. Tipos de bloques I-6 Copyright © 2008, Oracle. All rights reserved. Aplicaciones I-7 Copyright © 2008, Oracle. All rights reserved. Declaración de Variables I-8 Copyright © 2008, Oracle. All rights reserved. Asignación de Valores a Variables I-9 Copyright © 2008, Oracle. All rights reserved. Tipos de datos escalares •VARCHAR2 (longitud_máxima) • NUMBER [(precisión, escala)] • DATE • CHAR [(longitud_máxima)] • LONG • LONG RAW • BOOLEAN • BINARY_INTEGER • PLS_INTEGER I - 10 Copyright © 2008, Oracle. All rights reserved. Declaraciones de Variables escalares I - 11 Copyright © 2008, Oracle. All rights reserved. Atributo %TYPE • Sufijo que declara una variable coincidente con: – Una definición de una columna de la base de datos – Otra variable previamente declarada I - 12 Copyright © 2008, Oracle. All rights reserved. El Paquete DBMS_OUTPUT PL/SQL no dispone de funciones de E/S. El paquete DBMS_OUTPUT junto con SQL ofrece la posibilidad de mostrar mensajes en pantalla Pasos a seguir : • Activar la salida: SET SERVER OUTPUT {ON| OFF} [SIZE n] n es el tamaño del buffer de salida Predeterminado 2000 bytes Máximo 1.000.000 • Utilizar en el programa el procedimiento almacenado DBMS_OUTPUT.PUT_LINE Se añade el argumento al buffer de salida I - 13 Copyright © 2008, Oracle. All rights reserved. Algunos Procedimientos de DBMS_OUTPUT • PUT_LINE es un procedimiento del paquete DBMS_OUTPUT que sirve para escribir un dato (PUT) seguido de un fin de línea (NEW_LINE). • SET LINESIZE n, establece el tamaño de una línea en SQL*Plus, para todas sus salidas. • SHOW ERR, muestra los errores de compilación de un bloque PL/SQL. • EXEC <sentencia>, ejecuta una sentencia PL/SQL. Se puede usar para ejecutar un procedimiento sin tener que crear un bloque PL/SQL. I - 14 Copyright © 2008, Oracle. All rights reserved. Atributos de Cursor Se utilizan para chequear la salida de las órdenes SQL. I - 15 Copyright © 2008, Oracle. All rights reserved. Cursor SQL Un cursor es un área privada de trabajo SQL. • Hay dos tipos de cursores: – Implícitos – Explícitos • El servidor Oracle usa cursores implícitos para analizar y ejecutar las órdenes SQL. • Los cursores explícitos se declaran por el programador explícitamente. I - 16 Copyright © 2008, Oracle. All rights reserved. Estructuras de Control I - 17 Copyright © 2008, Oracle. All rights reserved. Flujo IF-THEN-ELSE I - 18 Copyright © 2008, Oracle. All rights reserved. Flujo IF-THEN-ELSIF I - 19 Copyright © 2008, Oracle. All rights reserved. Control de iteraciones Hay tres tipos de bucles: – Bucle básico – Bucle FOR – Bucle WHILE I - 20 Copyright © 2008, Oracle. All rights reserved. Bucle básico I - 21 Copyright © 2008, Oracle. All rights reserved. Bucle FOR I - 22 Copyright © 2008, Oracle. All rights reserved. Bucle WHILE I - 23 Copyright © 2008, Oracle. All rights reserved.