2. TEMA: PL/SQL EN ORACLE Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
3. PL/SQL EN ORACLE OBJETIVOS Objetivo General Realizar tareas de control, administración y consulta eficientes sobre bases de datos Oracle. Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
4. PL/SQL EN ORACLE OBJETIVOS Objetivos Específicos Realizar procedimientos, funciones, y otras tareas que ayudan al rápido manejo de la base de datos en un entorno Oracle forms. Trabajar directamente con la base de datos, no como un lenguaje separado que necesita de otras sentencias complejas para su conexión y funcionamiento. Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
5. PL/SQL EN ORACLE JUSTIFICACION Programar en PL/SQL es la mejor forma de interactuar con la base de datos de forma directa, permitiendo como ningún otro lenguaje tanto dinamismo y sentencias SQL de forma directa , logrando de esta forma rapidez, eficiencia y una forma amigable de trabajo con la BD. Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
6. PL/SQL EN ORACLE MARCO TEÓRICO Concepto PL/SQL es el lenguaje de programación que proporciona Oracle para extender el SQL estándar con otro tipo de instrucciones. 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. Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
7. PL/SQL EN ORACLE MARCO TEÓRICO Características Con PL/SQL vamos a poder programar las unidades de programa de la base de datos ORACLE, están son: Procedimientos almacenados Funciones Triggers Scripts, etc. Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
8. PL/SQL EN ORACLE MARCO TEÓRICO Características PL/SQL no es CASE-SENSITIVE, es decir, no diferencia mayúsculas de minúsculas como otros lenguajes de programación como C o Java. Sin embargo debemos recordar que ORACLE es CASE-SENSITIVE en la búsquedas de texto. Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
9. PL/SQL EN ORACLE MARCO TEÓRICO Características Una línea en PL/SQL contiene grupos de caracteres conocidos como UNIDADES LEXICAS, que pueden ser clasificadas como: DELIMITADORES IDENTIFICADORES LITERALES COMENTARIOS Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
10. PL/SQL EN ORACLE MARCO TEÓRICO Características DELIMITADOR: Es un símbolo simple o compuesto que tiene una función especial en PL/SQL. Estos pueden ser: Operadores Aritméticos Operadores Lógicos Operadores Relacionales Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
11. PL/SQL EN ORACLE MARCO TEÓRICO Características IDENTIFICADOR: Son empleados para nombrar objetos de programas en PL/SQL así como a unidades dentro del mismo, estas unidades y objetos incluyen: Constantes Cursores Variables Subprogramas Excepciones Paquetes Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
12. PL/SQL EN ORACLE MARCO TEÓRICO Características LITERAL:Es un valor de tipo numérico, carácter, cadena o lógico no representado por un identificador (es un valor explícito). COMENTARIO: Es una aclaración que el programador incluye en el código. Son soportados 2 estilos de comentarios, el de línea simple y de mistilínea, para lo cual son empleados ciertos caracteres especiales como son: -- Línea simple /* Conjunto de Líneas*/ Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
13. PL/SQL EN ORACLE MARCO TEÓRICO Características BLOQUES: Diferentes tipos de bloques como: Bloques Anónimos Se construyen de forma dinámica y se suelen ejecutar una sola vez. Bloques Nominados: Igual que los anónimos pero con una etiqueta que les da nombre. Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
14. PL/SQL EN ORACLE MARCO TEÓRICO Características BLOQUES: Subprogramas: Procedimientos, paquetes y funciones, almacenados en la base de datos y que se ejecutan en múltiples ocasiones Los subprogramas se ejecutan mediante una llamada. Disparadores: Bloques nominados que se almacenan en la base de datos y se ejecutan ante algún suceso. Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
15.
16. PL/SQL EN ORACLE MARCO TEÓRICO Sentencias Concepto: Secuencia de expresiones que especifica una o varias operaciones, las mas conocidas son las DML y que son las únicas ordenes SQL permitidas en un programa PLSQL y las de control de transacciones. SELECT, INSERT, UPDATE, DELETE. Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
17. PL/SQL EN ORACLE MARCO TEÓRICO Sentencias Sintaxis SELECT. SELECT <columnas> FROM <tabla> WHERE <condición> ORDER BY <columnas> (asc)(desc) Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
18. PL/SQL EN ORACLE MARCO TEÓRICO Sentencias Sintaxis INSERT INSERT INTO <tabla> [(columnas..i…j)] VALUES (ValorColumna i..j) Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
19. PL/SQL EN ORACLE MARCO TEÓRICO Sentencias Sintaxis UPDATE UPDATE <taba> SET <columnas..i>=<expresión i>,…<columna j>=<expresión j> WHERE <condición> Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
20. PL/SQL EN ORACLE MARCO TEÓRICO Sentencias Sintaxis DELETE DELETE FROM <tabla> WHERE <condición> Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
21. PL/SQL EN ORACLE MARCO TEÓRICO Procedimientos Almacenados Para utilizar un procedimiento almacenado de la base de datos simplemente se lo llama desde un bloque anónimo (desde la línea de comandos), previamente habiendo inicializado el/los parametro/s (en caso que existan). DECLARE nombre_parametrotipodatos_parametro; BEGIN nombre_parametrotipodatos_parametro := valor_de_inicializacion; nombre_procedimiento (nombre_parametro => nombre_parametro); END; Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
22. PL/SQL EN ORACLE MARCO TEÓRICO Procedimientos Almacenados Sintaxis CREATE [OR REPLACE] PROCEDURE nombre_procedimiento [nombre_parametro modo tipodatos_parametro ] IS | AS bloque de código Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
23. PL/SQL EN ORACLE MARCO TEÓRICO Procedimientos Almacenados Ejemplo CREATEORREPLACEPROCEDUREp_obtiene_datos_grupo (pn_gru_codigoINNUMBER, pv_gru_descripcionOUTVARCHAR2, lv_errorOUTVARCHAR2) IS Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
24. PL/SQL EN ORACLE BEGIN SELECTgru_descripcion, INTOpv_gru_descripcion, FROMnov_grupo WHEREnov_grupo.gru_codigo = 1 EXCEPTION WHEN NO_DATA_FOUND THEN lv_error := 'Datos del grupo no encontrados... '||SQLERRM; WHEN TOO_MANY_ROWS THEN lv_error := 'Existieronmas de dos registros del grupo ...'||SQLERRM; WHENOTHERSTHEN lv_error := 'Existion un error desconocido en el procedimientop_obtiene_datos_grupo. Error : '||SQLERRM; ENDp_obtiene_datos_grupo; Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
25. PL/SQL EN ORACLE MARCO TEÓRICO Funciones Una función es un bloque de código PL/SQL que tiene las mismas características que un procedimiento almacenado. La diferencia estriba que una función devuelve un valor al retornar. Al devolver un valor puede ser llamada como parte de una expresión. Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
26. PL/SQL EN ORACLE MARCO TEÓRICO Funciones Sintaxis CREATE [OR REPLACE] FUNCTION nombre_función [nombre_parámetro modo tipodatos_parametro ] RETURN tipodatos_retorno IS | AS bloque de código Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
27. PL/SQL EN ORACLE MARCO TEÓRICO Funciones FUNCTION F_MUESTRA_ALERTA (pv_mensaje_alerta IN VARCHAR2, pn_numero_botones IN NUM RETURN NUMBER IS ln_numero_recuperado NUMBER; la_id ALERT; lv_titulo_mensaje VARCHAR2(30); lv_nombre_alerta VARCHAR2(30); Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
28. PL/SQL EN ORACLE MARCO TEÓRICO Funciones BEGIN IF pn_numero_botones = 1 THEN lv_nombre_alerta := 'AL_PARAR'; ELSIF pn_numero_botones = 2 THEN lv_nombre_alerta := 'AL_PREGUNTAR'; ELSIF pn_numero_botones = 3 THEN lv_nombre_alerta := 'AL_AYUDA'; ELSE MESSAGE('Numero de botonesinvalido'); RAISE FORM_TRIGGER_FAILURE; END IF; lv_titulo_mensaje := 'SISTEMA NOVENO'; la_id := FIND_ALERT(lv_nombre_alerta); IF NOT ID_NULL (la_id) THEN SET_ALERT_PROPERTY(la_id, Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
29. PL/SQL EN ORACLE MARCO TEÓRICO Funciones ALERT_MESSAGE_TEXT, pv_mensaje_alerta); SET_ALERT_PROPERTY(la_id, TITLE, lv_titulo_mensaje); ln_numero_recuperado := SHOW_ALERT(la_id); ELSE MESSAGE('Alerta no encontrada ...'); END IF; RETURN ln_numero_recuperado; END;
30. PL/SQL EN ORACLE MARCO TEÓRICO Disparadores (Triggers ) Un trigger o disparador se ejecuta ante un determinado evento de manera automática. Generalmente se utilizan para garantizar que una determinada acción siempre se realiza después de realizar una tarea determinada. Se debe tener cuidado con este tipo de estructuras puesto que un uso excesivo puede dar lugar a dependencias difíciles de mantener. Además se deben tener muy claros las restricciones de integridad para evitar problemas Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
31. PL/SQL EN ORACLE MARCO TEÓRICO Disparadores (Triggers ) Sintaxis CREATE [OR REPLACE] TRIGGER nombre_triggermomento_ejecución evento [evento] ON nombre_tabla bloque PLSQL; Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
32. PL/SQL EN ORACLE MARCO TEÓRICO Disparadores (Triggers ) Ejemplo create or replace trigger td_nov_categoria before insert or update on nov_categoria referencing new as new old as old for each row begin ifinsertingthen --registro de auditoria :new.cat_adicionado :=user; :new.cat_fecha_adicion :=sysdate; :new.cat_modificado :=null; :new.cat_fecha_modificacion :=null; elsifupdatingthen --registro de mmodificacion :new.cat_modificado :=user; :new.cat_fecha_modificacion :=sysdate; endif; endtd_nov_categoria; Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
33. PL/SQL EN ORACLE CONCLUCIONES La creación de procedimientos, funciones, triggers, etc. han hecho que el uso de PL/SQL definitivamente concluya con un gran aporte a la sociedad ya que el trabajo con las bases de datos se minimiza en gran cantidad y no como lo es en otros lenguajes de programación el mismo y siempre tedioso trabajo de aprender nuevas codificaciones. Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
34. PL/SQL EN ORACLE RESUMEN PL/SQL un lenguaje que trabaja directamente con oracle, aportando en gran cantidad minimizaciones de trabajo para el desarrollador, y logrando de esta manera eficiencia en el trabajo, rapidez y seguridad. Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
35. PL/SQL EN ORACLE RESUMEN PL/SQL cuenta con un sin numero de características valiosas como: Procedimientos Almacenados, Triggers, Funciones, bloques, paquetes, bucles; de recordar también que PL/SQL es case – sencitive, cuenta también con delimitadores ,identificadores ,literales ,comentarios , etc. Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
36. PL/SQL EN ORACLE RESUMEN En PL/SQL es fácil manejar bloques tales como, Procedimientos Almacenados, Triggers, Funciones, en los ejemplos mostrados hemos visto que la realización o creación de uno de estos bloques es muy sencillo. Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
37. PL/SQL EN ORACLE RECOMENDACIONES A todos los lectores de estas diapositivas como recomendación PL/SQL es un lenguaje de alto rendimiento casi incomparable, no es exagerar pero recuerden por eso Oracle es caro y bueno como todo lenguaje la única dificultad será aprender, pero una vez encaminados la verdad es otra. Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado
38. PL/SQL EN ORACLE BIBLIOGRAFIA Clases Ing. Víctor Astudillo. Pdf. Bases de Datos. Introducción a PL/SQL (Miguel Ángel Galdón Romero Dep.Inf. EPSA) Direcciones WEB http://pl_sql_oracleikiL-SQL - Wiki pedía, la enciclopedia libre.htm http://www.devjoker.com/contenidos/Tutorial-PLSQL/21/Programación-con-PLSQL.aspx Profesor: Ing. Víctor Astudillo, U Israel Sandra Alvarado