0% found this document useful (0 votes)
30 views3 pages

PLSQL 7 4 Practice

don't read me
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views3 pages

PLSQL 7 4 Practice

don't read me
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
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


7-4: Recognizing the Scope of Exceptions
Practice Activities
Vocabulary
Identify the vocabulary word for each definition below:
Propagación De The inner block terminates unsuccessfully, and PL/SQL passes
excepciones the exception to the outer block.

Visibilidad de excepciones The portion of the program where the exception can be
accessed without using a qualifier.

Ámbito de excepción The portion of a program in which the exception is declared and
is accessible.

Try It / Solve It
1. Enter and run the following code twice, once for each of the two country_ids, 5 (which does not
exist) and 672 (Antarctica, which does exist but has no currency).

DECLARE

v_country_name countries.country_name%TYPE;
v_currency_code countries.currency_code%TYPE;
BEGIN
DECLARE
e_no_currency EXCEPTION;
BEGIN
SELECT country_name, currency_code INTO v_country_name, v_currency_code
FROM countries

WHERE country_id = 5; -- repeat with 672

IF v_currency_code = 'NONE' THEN


RAISE e_no_currency;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('This country does not exist');
WHEN e_no_currency THEN
DBMS_OUTPUT.PUT_LINE('This country exists but has no currency');
END;

EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Another type of error occurred');
END;

A. Explain the output. Save your code.


Country_id genera 5 NO_DATA_FOUND y se muestra "Este país no existe".
Country_id genera 672 e_no_currency y se muestra ‘Este país existe pero no tiene moneda’

B. Modify the code to move the two exception handlers to the outer block. Leave the declaration of
e_no_currency in the inner block. Execute twice, again using country_ids 5 and 672. Now what happens
and why? Save your code.
OCURRE UN ERROR

DECLARE
v_country_name wf_countries.country_name%TYPE;
v_currency_code wf_countries.currency_code%TYPE;
BEGIN
DECLARE
e_no_currency EXCEPTION;
BEGIN
SELECT country_name, currency_code
INTO v_country_name, v_currency_code
FROM wf_countries
WHERE country_id = 5; -- repeat with 672
IF v_currency_code = 'NONE' THEN
RAISE e_no_currency;
END IF;
END;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('This country does not exist');
WHEN e_no_currency THEN
DBMS_OUTPUT.PUT_LINE('This country exists but has no currency');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Another type of error occurred');
C. Modify the code again to move the declaration of e_no_currency to the outer block. Execute the code
again using country_ids 5 and 672. Now what happens and why?
EN COUNTRY_IDS 5 NOS APARECE QUE NO EXISTE Y 672 QUE EXISTE PERO NO TIENE
DISPONIBLE.

DECLARE
v_country_name wf_countries.country_name%TYPE;
v_currency_code wf_countries.currency_code%TYPE;
e_no_currency EXCEPTION;
BEGIN
SELECT country_name, currency_code
INTO v_country_name, v_currency_code
FROM wf_countries
WHERE country_id = 5; -- repeat with 672
IF v_currency_code = 'NONE' THEN
RAISE e_no_currency;
END IF;
END;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('This country does not exist');
WHEN e_no_currency THEN
DBMS_OUTPUT.PUT_LINE('This country exists but has no currency');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Another type of error occurred');
END;

You might also like