Professional Documents
Culture Documents
TECHNICAL ASSESSMENT
M1, M2, M3
Section:
Professor:
To find the number of airports from the countries table for a supplied country_name. Based on this number, display a
customized message as follows:
Create a PL/SQL block that fetches and displays the six employees with the highest salary. For each of these
employees, display the first name, last name, job id, and salary. Order your output so that the employee with the
highest salary is displayed first. Use %ROWTYPE and the explicit cursor attribute
%ROWCOUNT.
DECLARE
SELECT *
FROM employees
v_emp_rec employees_cursor%ROWTYPE;
BEGIN
OPEN employees_cursor;
LOOP
END LOOP;
CLOSE employees_cursor;
END;
Write a PL/SQL block to read through rows in the countries table for all countries in region 5 (South America region).
Country name must be entered by the user. For each selected country, display the country_name, national_holiday_date,
and national_holiday_name. Use a record structure (user defined) to hold all the columns selected from the
countries table.
DECLARE
FROM wf_countries
WHERE region_id = 5;
v_countries countries_cur%ROWTYPE;
BEGIN
OPEN countries_cur;
LOOP
END LOOP;
CLOSE countries_cur;
END;
A. Add an exception handler to the following code to trap the following predefined Oracle Server errors:
NO_DATA_FOUND, TOO_MANY_ROWS, and DUP_VAL_ON_INDEX. (5 pts)
DECLARE
v_language_id languages.language_id%TYPE;
v_language_name languages.language_name%TYPE;
BEGIN
SELECT language_id, language_name INTO v_language_id, v_language_name FROM languages WHERE
LOWER(language_name) LIKE '<substring%>'; -- for example 'ab%'
DECLARE v_language_id
languages.language_id%TYPE;
v_language_name languages.language_name%TYPE;
BEGIN
SELECT language_id, language_name INTO v_language_id, v_language_name
FROM languages
WHERE LOWER(language_name) LIKE '<substring%>'; -- for example 'ab%'
INSERT INTO languages(language_id, language_name)
VALUES(80, null);
exception
when NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('No se encontro dato, se controlo el error');
when TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('Muchas filas, se
controlo el error');
WHEN DUP_VAL_ON_INDEX THEN
DBMS_OUTPUT.PUT_LINE('dup val on index, se controlo el error');
END;
Aparece el error
NO_DATA_FOUND
y
TOO_MANY_ROWS
B. Now test your block a third time using substring: al. There is exactly one language_name beginning with
“Al”. Note that language_id 80 (Arabic) already exists. Explain the output. (5 pts)
C. Now (keeping the substring as “al”), add a non_predefined exception handler to trap then encountered oracle
exception code. Rerun the code and explain the result. (5 pts)
DECLARE v_language_id
languages.language_id%TYPE
;
v_language_name languages.language_name%TYPE;
e_null_not_allowed
EXCEPTION;
PRAGMA EXCEPTION_INIT (e_null_not_allowed,
-
01400);
BEGIN
SELECT language_id, language_name INTO v_language_id, v_language_name
FROM languages
WHERE LOWER(language_name) LIKE 'Al%';
--
for example 'ab%'
INSERT INTO languages(language_id, language_name)
VALUES(80, null);
exception
when e_null_not_allowed THEN
DBMS_OUTPUT.PUT_LINE('Se controlo el error');
END;
Imprimio no data found