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: