PLSQL 2 6 Practice
PLSQL 2 6 Practice
com/academy
Try It / Solve It
1. Evaluate the PL/SQL block below and determine the value of each of the following
variables according to the rules of scoping.
DECLARE weight
NUMBER(3) := 600;
message VARCHAR2(255) := 'Product 10012';
BEGIN
DECLARE weight NUMBER(3) := 1;
message VARCHAR2(255) := 'Product 11001';
new_locn VARCHAR2(50) := 'Europe'; BEGIN
weight := weight + 1; new_locn
:= 'Western ' || new_locn; --
Position 1 --
END;
weight := weight + 1;
message := message || ' is in stock';
-- Position 2 --
END;
A. The value of weight at position 1 is:
Western Europe
601
2. Enter and run the following PL/SQL block, which contains a nested block. Look at
the output and answer the questions.
DECLARE
v_employee_id employees.employee_id%TYPE;
v_job employees.job_id%TYPE;
BEGIN
SELECT employee_id, job_id INTO v_employee_id, v_job
FROM employees
WHERE employee_id = 100;
DECLARE v_employee_id
employees.employee_id%TYPE;
v_job employees.job_id%TYPE;
BEGIN
SELECT employee_id, job_id INTO v_employee_id, v_job
FROM employees
WHERE employee_id = 103;
DBMS_OUTPUT.PUT_LINE(v_employee_id || ' is a(n) ' || v_job); END;
DBMS_OUTPUT.PUT_LINE(v_employee_id || ' is a(n) ' || v_job); END;
A. Why does the inner block display the job_id of employee 103, not employee 100?
Porque la declaración del bloque interno tiene más jerarquía que el bloque
externo.
B. Why does the outer block display the job_id of employee 100, not employee 103?
Modify the code to display the details of employee 100 in the inner block. Use block
labels
--outer_block
DECLARE
v_employee_id employees.employee_id%TYPE;
v_job employees.job_id%TYPE;
BEGIN
SELECT employee_id, job_id INTO v_employee_id, v_job
FROM employees
WHERE employee_id = 100;
--inner_block
DECLARE
v_employee_id employees.employee_id%TYPE;
v_job employees.job_id%TYPE;
BEGIN
SELECT employee_id, job_id INTO v_employee_id, v_job
FROM employees
WHERE employee_id = 103;
DBMS_OUTPUT.PUT_LINE(outer_block.v_employee_id||
‘ is a '||outer_block.v_job);
END;
DBMS_OUTPUT.PUT_LINE(v_employee_id||‘ is a '||v_job);
END;
Copyright © 2016, Oracle and/or its respective owners. affiliates. All rights reserved. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be
trademarks of their