M2 - Bases de dades / Exercicis UF3: Llenguatges SQL / Solucions PL-SQL T9
De wikiserver
Solución 9: Creación y Uso de Procedimientos Almacenados
En esta práctica, modificará scripts existentes para crear y utilizar procedimientos almacenados.
1) A partir de l'exercici 4 del tema2:
DECLARE v_today DATE:=SYSDATE; v_tomorrow v_today%TYPE; BEGIN v_tomorrow:=v_today +1; DBMS_OUTPUT.PUT_LINE(' Hello World '); DBMS_OUTPUT.PUT_LINE('TODAY IS : '|| v_today); DBMS_OUTPUT.PUT_LINE('TOMORROW IS : ' || v_tomorrow); END;
- a) Modifique el script para convertir el bloque anónimo en un procedimiento denominado greet. (Indicación: elimine también el comando SET SERVEROUTPUT ON).
CREATE PROCEDURE greet IS v_today DATE:=SYSDATE; V_tomorrow v_today%TYPE; BEGIN v_tomorrow:=v_today +1; DBMS_OUTPUT.PUT_LINE(' Hello World '); DBMS_OUTPUT.PUT_LINE('TODAY IS : '|| v_today); DBMS_OUTPUT.PUT_LINE('TOMORROW IS : ' || v_tomorrow); END;
- b) Ejecute el script para crear el procedimiento. La salida resultante debe ser como la siguiente:
- c) Guarde este script como lab_09_01_soln.sql.
- d) Haga clic en el botón Clear para limpiar el espacio de trabajo.
- e) Cree y ejecute un bloque anónimo para llamar al procedimiento greet. (Indicación: asegúrese de activar SERVEROUTPUT al principio del bloque).
SET SERVEROUTPUT ON BEGIN greet; END;
La salida debe ser similar a la siguiente:
2) Modifique el script lab_09_01_soln.sql de la siguiente forma:
- a) Borre el procedimiento greet emitiendo el siguiente comando:
DROP PROCEDURE greet;
- b) Modifique el procedimiento para aceptar un argumento de tipo VARCHAR2.
Llame al argumento p_name.
CREATE PROCEDURE greet(p_name VARCHAR2) IS v_today DATE:=SYSDATE; V_tomorrow today%TYPE;
- c) Imprima Hello <name> en lugar de Hello World.
BEGIN v_tomorrow:=v_today +1; DBMS_OUTPUT.PUT_LINE(' Hello '|| p_name); ...
- d) Guarde el script como lab_09_02_soln.sql.
- e) Ejecute el script para crear el procedimiento. La salida resultante debe ser como la siguiente:
- f) Cree y ejecute un bloque anónimo para llamar al procedimiento greet con un valor de parámetro. El bloque también debe producir la salida.
SET SERVEROUTPUT ON; BEGIN greet('Nancy'); END;
La salida de ejemplo debe ser similar a la siguiente: