0% found this document useful (0 votes)
653 views

PLSQL 2 6 Practice

plsql

Uploaded by

liliana
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
653 views

PLSQL 2 6 Practice

plsql

Uploaded by

liliana
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

www.oracle.

com/academy

Database Programming with PL/SQL


2-6: Nested Blocks and Variable Scope
Practice Activities
Vocabulary
Identify the vocabulary word for each definition below.

A name given to a block of code which allows access to the


BLOCK LABEL variables that have scope, but are not visible.
Consists of all the blocks in which the variable is either local (the
VARIABLE SCOPE declaring block) or global (nested blocks within the declaring block) .

The portion of the program where the variable can be accessed


VARIABLE VISIBILITY without using a qualifier.

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:

B. The value of new_locn at position 1 is:

Western Europe

C. The value of weight at position 2 is:

601

D. The value of message at position 2 is:

Product 10012 is in stock

E. The value of new_locn at position 2 is:

No se puede esta fuera del rango del bloque

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?

Porque la declaración del bloque interno no la puede tomar el bloque externo

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

You might also like