Respuestas Oracle PL-SQL Practica 18

Introduction to Oracle: SQL and PL/SQL, Instructor Guide, Volumen 1 Práctica 18: Interactuando con el Servidor Oracle -

Views 196 Downloads 13 File size 15KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Introduction to Oracle: SQL and PL/SQL, Instructor Guide, Volumen 1

Práctica 18: Interactuando con el Servidor Oracle --------------------------------------------------------------------

Ejercicio 1: Cree un bloque PL/SQL que seleccione el número de departamento máximo de la tabla DEPT y lo almacene en una variable de SQL*PLUS. Imprima el resultado en pantalla. G uarde el bloque PL/SQL en un archivo nombrándolo p18q1.sql. G_MAX_DEPTNO -----------40 Respuesta 1) -----------SQL>

edit

p18q1.sql

Contenido del archivo de comandos con el bloque PL/SQL: p18q1.sq l ---------------------------------------------------------------" VARIABLE DECLARE

G_MAX_DEPTNO v_max_deptno

NUMBER;

DEPT.DEPTNO%TYPE;

BEGIN SELECT MAX( DEPTNO ) INTO v_max_deptno FROM DEPT; :G_MAX_DEPTNO := END; / PRINT " SQL>

v_max_deptno;

G_MAX_DEPTNO; start

p18q1.sql

Ejercicio 2: Modifique el bloque PL/SQL que creó en el Ejercicio 1 para inserta r un registro/fila de un departamento nuevo dentro de la tabla DEPT. Guarde el bloque PL/SQL a un archivo nombrándolo p18q2.sql a) En lugar de imprimir el número de departamento obtenido en el e jercicio 1, sumele 10 a ese número y úselo como el número de departamento para el departamento nuevo. b) Use una variable de sustitución de SQL*PLUS para el nombre del departamento nuevo c) Deje por ahora con valor NULO la ubicación o localidad del depa rtamento nuevo (loc)

d) Ejecute el bloque PL/SQL Por favor ingrese el nombre del departamento: EDUCATION PL/SQL procedure successfully completed. e) Muestre el departamento que ha creado Respuestas: 2.a), 2.b) y 2.c) ----------------------------SQL>

edit

p18q2.sql

Contenido del archivo de comandos con el bloque PL/SQL: p18q2.sq l ---------------------------------------------------------------" ACCEPT p_dept_dname PROMPT 'Por favor ingrese el nombre del departamento:'; DECLARE v_max_deptno DEPT.DEPTNO%TYPE; v_dept_deptno DEPT.DEPTNO%TYPE; v_dept_dname DEPT.DNAME%TYPE; BEGIN SELECT MAX( DEPTNO ) INTO v_max_deptno FROM DEPT; v_dept_deptno := v_max_deptno + 10; v_dept_dname := '&p_dept_dname'; INSERT INTO DEPT VALUES ( v_dept_deptno, v_dept_dname, NULL ); COMMIT; END; / " Respuesta 2.d) -------------SQL>

start

p18q2.sql

Respuesta 2.e) -------------SQL>

SELECT DEPTNO, DNAME, LOC FROM DEPT WHERE DEPTNO = :G_MAX_DEPTNO + 10;

Ejercicio 3: Cree un bloque PL/SQL que actualice la localidad para un departa mento existente. Guarde el bloque PL/SQL a un archivo nombrándolo p18q3.sql a) Use una variable de sustitución de SQL*PLUS para el número de dep artamento b) Use una variable de sustitución de SQL*PLUS para la localidad d el departamento c) Testee el Bloque PL/SQL

"Por favor ingrese el número de departamento: 60" "Por favor ingrese la localidad del departamento: HOUSTON" PL/SQL procedure successfully completed. d) Muestre el número de departamento, el nombre del departamento, y la localidad para el departamento actualizado. e) Muestre el departamento que ha actualizado. Respuestas 3.a), 3.b) --------------------SQL>

edit

p18q3.sql

Contenido del archivo de comandos con el bloque PL/SQL: ------------------------------------------------------" ACCEPT p_dept_deptno PROMPT 'Por favor ingrese el número del d epartamento: '; ACCEPT p_dept_loc del departamento: '; DECLARE v_dept_deptno v_dept_loc BEGIN v_dept_deptno v_dept_loc UPDATE DEPT SET loc WHERE deptno COMMIT; END; / "

PROMPT 'Por favor ingrese la localidad DEPT.DEPTNO%TYPE; DEPT.LOC%TYPE; := :=

&p_dept_deptno; '&p_dept_loc';

= v_dept_loc = v_dept_deptno;

Respuesta 3.c) -------------SQL>

start

p18q3.sql

Respuesta 3.d) y 3.e) --------------------SQL>

SELECT deptno, dname, loc FROM DEPT WHERE deptno = &p_dept_deptno;

Ejercicio 4: Cree un bloque PL/SQL que elimine el departamento creado en el e jercicio 2. Guarde el bloque PL/SQL a un archivo de comandos nombrándolo p18q4.sql. a) Use una variable de sustitución de SQL*PLUS para el número de dep artamento. b) Imprima en pantalla el número de registros/filas afectados.

c) Testee el bloque PL/SQL "Por favor ingrese el número de departamento: 60" PL/SQL procedure successfully completed. G_RESULT -------1 row(s) deleted. d) ¿Qué sucede si ingresa un número de departamento que no existe? "Por favor ingrese el número de departamento: 99" PL/SQL procedure successfully completed. G_RESULT -------0 row(s) deleted. e) Verifique que el departamento ha sido eliminado. no rows selected Respuestas 4.a) y 4.b) ---------------------SQL>

edit

p18q4.sql

Contenido del archivo de comandos con el bloque PL/SQL: p18q4.sq l ---------------------------------------------------------------" VARIABLE G_RESULT VARCHAR2(30); ACCEPT p_dept_deptno PROMPT 'Por favor ingrese el número del d epartamento: '; DECLARE v_dept_deptno

DEPT.DEPTNO%TYPE;

v_dept_deptno DELETE FROM WHERE deptno :G_RESULT

:= &p_dept_deptno; DEPT = v_dept_deptno; := ( SQL%ROWCOUNT || ' registros-fi

BEGIN

las eliminados.' ); COMMIT; END; / PRINT "

G_RESULT;

Respuesta 4.c) -------------SQL>

start

p18q4.sql

Respueta 4.d) ------------SQL>

start

p18q4.sql

"Por favor ingrese el número de departamento: 99" PL/SQL procedure successfully completed. G_RESULT -------0 row(s) deleted. Respuesta 4.e) SQL>

SELECT deptno, dname, loc FROM DEPT WHERE deptno = 60; Ninguna fila seleccionada