Universidad Nacional Autónoma de México Ingeniería en Computación Laboratorio de Bases de Datos PRÁCTICA 12. Fecha de realización: 6 de diciembre de 2022 Fecha de entrega: 11 de diciembre de 2022 INTRODUCCIÓN PL/SQL es un lenguaje de programación desarrollado por Oracle como extensión de SQL. Ambos son lenguajes de bases de datos relacionales, pero entre ellos existen varias diferencias. SQL es un lenguaje de consulta estructurado con el que podemos manejar la información de una base de datos, modificando esos datos, añadiendo o eliminando. Es un lenguaje declarativo. 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 y elementos propios de los lenguajes de programación. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle: ● ● ● ● ● Procedimientos almacenados: es un subprograma que ejecuta una acción específica y que no devuelve ningún valor por si mismo, como sucede con las funciones. Funciones: Cursores: permiten recorrer fila a fila, leer y eventualmente modificar dicho conjunto de resultados Triggers Scripts OBJETIVO El alumno tendrá un primer acercamiento con el lenguaje de programación PL/SQL aprendiendo el uso de bloques anónimos,disparadores, cursores y procedimientos. Imagen 1 Imagen 2 Imagen 3 Imagen 4 Imagen 5 --Con esto podemos consultar dicha info a partir de cualquier id Imagen 6 Imagen 7 –Si no podemos una línea en blanco, queda pegado al margen Imagen 8 –Aquí se observa que efectivamente se ha guardado el procedimiento –El bloque anónimo no se guarda, el procedimiento sí Imagen 9 Imagen 10 –Los disparadores trabajan de manera automática –Operaciones con las cuales se dispara: INSERT, DELETE, UPDATE –Los eventos pueden ser BEFORE o AFTER Imagen 11 Imagen 12 Imagen 13 Imagen 14 Imagen 15 Podemos observar que con FECTH, al funcionar como apuntador y C_ANALSIS_SHCA al funcionar como arreglo, se irán guardando múltiples filas. Imagen 16 Aquí la variable TODO nos trae todo lo relacionado a dicho ID y PLACA Imagen 13 RESULTADOS Imagen 15 Imagen 16 DECLARE V_ID NUMBER(4); V_PLACA_BASE VARCHAR2(20); V_VENDEDOR VARCHAR2(20):='&VENDEDOR'; V_IDEN NUMBER(4); V_PLACAS VARCHAR2(20); V_VENDEDORES VARCHAR2(20):='&VENDEDORES'; CURSOR C1 IS SELECT ID,PLACA_BASE FROM EQUIPO_SHCA WHERE VENDEDOR = V_VENDEDOR; CURSOR C2 IS SELECT IDEN,PLACAS FROM EQUIPOS WHERE VENDEDORES = V_VENDEDORES; BEGIN OPEN C1; LOOP FETCH C1 INTO V_ID,V_PLACA_BASE; DBMS_OUTPUT.put_line('EL ID: '||V_ID); DBMS_OUTPUT.put_line('eSTA RELACIONADO CON LA PLACA:' ||V_PLACA_BASE); EXIT WHEN C1%NOTFOUND; END LOOP; OPEN C2; LOOP FETCH C2 INTO V_IDEN,V_PLACAS; DBMS_OUTPUT.put_line('EL ID: '||V_IDEN); DBMS_OUTPUT.put_line('eSTA RELACIONADO CON LA PLACA:' ||V_PLACAS); EXIT WHEN C2%NOTFOUND; END LOOP; CLOSE C2; DBMS_OUTPUT.put_line('PROCESO CONCLUIDO'); END; Imagen 17 Imagen 18 Imagen 19 Aquí podemos observar que se creó una segunda tabla para poder realizar cursores anidados que me brinden info tanto de la tabla A como B. CONCLUSIÓN Esta práctica me sirvió como una introducción a la programación PL/SQL, ya que aprendí muy por encima el concepto y uso de procedimientos, disparadores, cursores, bloques anónimos. Por ejemplo, los bloques anónimos nos permitirán realizar pruebas de nuestra base de datos, pues estos no se guardarán, en cambio los procedimientos si lo harán. Para el caso de los disparadores, estos se activarán de manera automática al ejecutarse alguna acción como insertar, borrar o actualizar, y por último los cursores podrán ir recorriendo fila por fila teniendo la oportunidad de poder realizar alguna acción sobre de ellas de una por una sin necesidad de hacerlo manualmente. REFERENCIAS CONSULTADAS MICROSOFT. “PL/SQL”. Consultado el 11 de diciembre del 2022. Recuperado en https://learn.microsoft.com/es-es/sql/t-sql/language-elements/declare-cursor-transact-sql?view=sql-ser ver-ver16 Baúl del programador “PL/SQL: FUNCIONES” Consultado el 11 de diciembre del 2022. Recuperado en https://elbauldelprogramador.com/plsql-procedimientos-y-funciones/ KRAPP DARIO “CURSORES” Consultado el 11 de diciembre del 2022. Recuperado en : https://www.programandoamedianoche.com/2009/11/cursores-en-sql-server/ ÍNDICE DE IMÁGENES INTRODUCCIÓN………………………………………………………………1 OBJETIVO………………………………………………………………………1 DESARROLLO…………………………………………………………………2 Imagen 1…………………………………………………………………2 Imagen 2-4………………………………………………………………3 Imagen 5-6………………………………………………………………4 Imagen 7…………………………………………………………………5 Imagen 8-9………………………………………………………………6 Imagen 10-11……………………………………………………………7 Imagen 12……………………………………………………………….8 Imagen 13-14……………………………………………………………9 RESULTADOS…………………………………………………………………10 Imagen 15 …………………………………………………………….10 Imagen 16……………………………………………………………..11 Imagen 17-19…………………………………………………………13 CONCLUSIÓN………………………………………………..……………….14 REFERENCIAS CONSULTADAS…………………………..……………….14