Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика. Часть 1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
238.08 Кб
Скачать

3. С помощью инструкции update измените значение location_id, для вновь

добавленного отдела на 3000. Продолжите работу с предыдущим скриптом.

a. В исполняемой секции блока выполните инструкцию UPDATE.

b. Выведите новое состояние записи с помощью инструкции SELECT.

c. После проверки удалите добавленную строку.

d. Сохраните скрипт под именем lab_04_03_soln.sql.

VARIABLE dept_id NUMBER;

DECLARE

max_deptno NUMBER(10);

V_location_id NUMBER(5);

dept_name departments.department_name%type:='Education';

BEGIN

SELECT MAX(department_id) INTO max_deptno FROM departments;

UPDATE departments SET location_id = 3000 WHERE department_id = max_deptno;

SELECT location_id INTO V_location_id FROM departments WHERE department_id = max_deptno;

DBMS_OUTPUT.ENABLE();

DBMS_OUTPUT.PUT_LINE('New location_id value ' || v_location_id);

DELETE departments WHERE department_id = max_deptno;

DBMS_OUTPUT.PUT_LINE(SQL%rowcount);

END;

/

4. Откройте скрипт lab_03_05b.Sql.

a. Согласно комментариям включите в скрипт исполняемую секцию для

внешнего блока.

b. Добавьте в исполняемую секцию инструкцию SELECT..INTO для

получения номера u1089 сотрудника (employee_id) работающего в отделе “Human

Resources».

c. Сохраните скрипт под именем lab_04_04_soln.sql.

SET SERVEROUTPUT ON

SET VERIFY OFF

ACCEPT emp_id PROMPT 'Please enter your employee number';

ACCEPT emp_deptid PROMPT 'Please enter the department number for which salary revision is being done';

DECLARE

emp_authorization NUMBER(5);

emp_id NUMBER(5):=&emp_id;

emp_deptid NUMBER(6):=&emp_deptid;

no_such_employee EXCEPTION;

v_employee_id employee_details.employee_id%type;

-- INCLUDE EXECUTABLE SECTION OF OUTER BLOCK HERE

BEGIN

-- RAISE EXCEPTION HERE

-- INCLUDE SIMPLE IF STATEMENT HERE

IF TRUE THEN

SELECT employee_id INTO v_employee_id FROM employee_details WHERE department_id IN (SELECT department_id FROM departments WHERE department_name = 'Human Resources');

DECLARE

emp_sal employee_details.salary%TYPE;

emp_fname employee_details.first_name%TYPE;

emp_lname employee_details.last_name%TYPE;

i NUMBER:=1;

-- DECLARE AN INDEX BY TABLE OF TYPE VARCHAR2(50). CALL

-- IT ename_table_type

-- DECLARE A VARIABLE ename_table OF TYPE ename_table_type

c_hike1 constant real :=.20;

c_hike2 constant real :=.15;

c_hike3 constant real :=.08;

c_hike4 constant real :=.03;

c_range1 constant number :=6500;

c_range2 constant number :=9500;

c_range3 constant number :=12000;

BEGIN

NULL;

END;

-- DECLARE A CURSOR CALLED emp_records TO HOLD salary,

-- first_name, and last_name of employees

-- INCLUDE EXECUTABLE SECTION OF INNER BLOCK HERE

-- CLOSE THE INNER BLOCK

ELSE

DBMS_OUTPUT.PUT_LINE ('SORRY YOU ARE NOT AUTHORIZED TO USE THIS APPLICATION');

END IF;

-- INCLUDE EXCEPTION SECTION FOR OUTER BLOCK

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('Exception occured');

-- CLOSE THE OUTER BLOCK

END;