P3-Escritura de Sentencias Ejecutables
De wikiserver
1) Evalúe el bloque PL/SQL siguiente y determine tanto el tipo de dato como el valor de cada una de las siguientes variables, según las reglas de los ámbitos.
a) Valor de v_weight en la posición 1:
b) Valor de v_new_locn en la posición 1:
c) Valor de v_weight en la posición 2:
d) Valor de v_message en la posición 2:
e) Valor de v_new_locn en la posición 2:
Sol.lucions a) El valor de v_weight en la posición 1 es: 2 El tipo de dato es NUMBER. b) El valor de v_new_locn en la posición 1 es: Western Europe El tipo de dato es VARCHAR2. c) El valor de v_weight en la posición 2 es: 601 El tipo de dato es NUMBER. d) El valor de v_message en la posición 2 es: Product 10012 is in stock El tipo de dato es VARCHAR2. e) El valor de v_new_locn en la posición 2 es: No válido porque v_new_locn no es visible fuera del subbloque
2) En el bloque PL/SQL siguiente, determine el valor y el tipo de dato en cada uno de los siguientes casos:
a) Valor de v_customer en el bloque anidado:
b) Valor de v_name en el bloque anidado:
c) Valor de v_credit_rating en el bloque anidado:
d) Valor de v_customer en el bloque principal:
e) Valor de v_name en el bloque principal:
f) Valor de v_credit_rating en el bloque principal:
Sol.lucions a) El valor de v_customer en el bloque anidado es: 201 El tipo de dato es NUMBER. b) El valor de v_name en el bloque anidado es: Unisports El tipo de dato es VARCHAR2. c) El valor de v_credit_rating en el bloque anidado es: GOOD El tipo de dato es VARCHAR2. d) El valor de v_customer en el bloque principal es: Womansport El tipo de dato es VARCHAR2. e) El valor de v_name en el bloque principal es: Nulo. name no está visible en el bloque principal y aparecerá un error. f) El valor de v_credit_rating en el bloque principal es: EXCELLENT El tipo de dato es VARCHAR2.
3) A continuación, edite P2_05.sql de la siguiente forma:
a) Con la sintaxis de comentarios de una sola línea, comente las líneas que crean las variables de enlace y active SERVEROUTPUT.
b) Con los comentarios de varias líneas, comente en la sección ejecutable las líneas que asignan valores a las variables de enlace.
c) En la sección de declaraciones:
1. Declare e inicialice dos variables temporales para sustituir las variables de enlace comentadas.
2. Declare dos variables adicionales: v_fname del tipo VARCHAR2 y tamaño 15, y v_emp_sal del tipo NUMBER y tamaño 10.
d) Incluya la siguiente sentencia SQL en la sección ejecutable:
SELECT first_name, salary INTO v_fname, v_emp_sal
FROM employees WHERE employee_id=110;
e) Cambie la línea que imprime “Hello World” para que imprima “Hello” y el nombre. A continue v_credit_rating en el bloque anidado:
d) Valor ación, comente las líneas que muestran las fechas
e imprima las variables de enlace.
f) Calcule la aportación del empleado al fondo de previsión (PF). PF es el 12% del salario básico, y el salario básico es el 45% del salario.
Utilice las variables locales para el cálculo. Intente utilizar sólo una expresión para calcular el valor de PF. Imprima el salario del empleado
y su aportación a PF.
g) Ejecute y guarde el script como P3_03.sql.
La salida de ejemploes la siguiente:
Sol.lució
-- VARIABLE b_basic_percent NUMBER
-- VARIABLE b_pf_percent NUMBER
SET SERVEROUTPUT ON
/*:b_basic_percent:=45;
:b_pf_percent:=12;*/
DECLARE
v_basic_percent NUMBER:=45;
v_pf_percent NUMBER:=12;
v_fname VARCHAR2(15);
v_emp_sal NUMBER(10);
BEGIN
SELECT first_name, salary INTO v_fname, v_emp_sal
FROM employees WHERE employee_id=110;
DBMS_OUTPUT.PUT_LINE(' Hello '|| v_fname);
/*
DBMS_OUTPUT.PUT_LINE('TODAY IS : '|| v_today);
DBMS_OUTPUT.PUT_LINE('TOMORROW IS : ' || v_tomorrow);*/
...
...
/
--PRINT b_basic_percent
--PRINT b_basic_percent