
- •Лабораторная работа № 3
- •1. Проанализируйте блок кода и ответьте на вопросы:
- •4. В этом задании вы будете работать с переменными подстановки, запрашивая их
- •Лабораторная работа № 4
- •3. С помощью инструкции update измените значение location_id, для вновь
- •4. Откройте скрипт lab_03_05b.Sql.
- •Лабораторная работа № 5
- •Лабораторная работа № 6
- •1. Напишите скрипт для распечатки информации о выбранной стране:
- •2. Напишите блок кода для выборки имени u1076 департамента из специальной структуры
- •3. Измените скрипт из второго пункта, таким образом, чтобы в индексированной таблице хранились записи (record), содержащие всю информацию об отделах.
- •Лабораторная работа № 7.
- •Лабораторная работа № 8.
- •1. Основная задача этого упражнения – продемонстрировать использование
- •3. Загрузите скрипт lab_07_04_soln.Sql.
4. В этом задании вы будете работать с переменными подстановки, запрашивая их
значения в run-time. Продолжайте модифицировать скрипт из 3 пункта, или
откройте файл lab_03_04.sql из основной папки курса.
a. Добавьте в скрипт инструкцию PROMPT с информационным сообщением
«Укажите номер сотрудника».
b. Измените декларацию (или создайте) переменной empno так, чтобы она
инициализировалась значением, полученным у пользователя.
c. Измените инструкцию SELECT так, чтобы при поиске информации о
сотруднике использовать значение u1087 переменной empno.
d. Выполните скрипт и сохраните его под именем lab_03_04_soln.sql.
set serveroutput on; ACCEPT empno PROMPT 'Укажите номер сотрудника' Declare fname varchar2(15); emp_sal number(10); begin SELECT first_name, salary INTO fname, emp_sal FROM employees WHERE employee_id = &empno; dbms_output.enable(); dbms_output.put_line('Hello, ' || fname); dbms_output.put_line('Your salary is ' || emp_sal); dbms_output.put_line('Your tax deduction is '|| emp_sal*0.45*0.12); end; / |
e. Результат должен выглядеть примерно так:
old:Declare fname varchar2(15); emp_sal number(10); begin SELECT first_name, salary INTO fname, emp_sal FROM employees WHERE employee_id = &empno; dbms_output.enable(); dbms_output.put_line('Hello, ' || fname); dbms_output.put_line('Your salary is ' || emp_sal); dbms_output.put_line('Your tax deduction is '|| emp_sal*0.45*0.12); end; new:Declare fname varchar2(15); emp_sal number(10); begin SELECT first_name, salary INTO fname, emp_sal FROM employees WHERE employee_id = 110; dbms_output.enable(); dbms_output.put_line('Hello, ' || fname); dbms_output.put_line('Your salary is ' || emp_sal); dbms_output.put_line('Your tax deduction is '|| emp_sal*0.45*0.12); end; anonymous block completed Hello, John Your salary is 8200 Your tax deduction is 442.8
|
5. Выполните скрипт lab_03_05.sql (CREATE TABLE employee_details AS SELECT *
FROM EMPLOYEES). Будет создана таблица EMPLOYEE_DETAILS.
a. Таблицы employees и employee_details имеют одинаковую структуру и
данные. Все дальнейшие модификации выполняйте над данными из
таблицы employee_details.
b. Откройте скрипт lab_03_05b.sql. Посмотрите на него внимательно. Изучите
инструкции accept, которые используются для приема значений от
пользователя. Вы будете использовать этот скрипт в дальнейшем.
Лабораторная работа № 4
1. Создайте скрипт для выборки максимального номера отдела, сохраните его в
переменной max_deptno, распечатайте полученное значение:
a. Декларируйте переменную max_deptno типа NUMBER.
b. В исполняемой секции блока выберите максимальное значение номера
отдела и сохраните его в переменной
c. Распечатайте значение переменной в конце исполняемой секции.
d. Сохраните результат в файле lab_04_01_soln.sql
DECLARE max_deptno NUMBER(10); BEGIN SELECT MAX(department_id) INTO max_deptno FROM departments; DBMS_OUTPUT.ENABLE(); DBMS_OUTPUT.PUT_LINE(max_deptno); END; / |
e. Результат должен выглядеть примерно так:
anonymous block completed 270 |
2. Измените скрипт из упражнения 1.
a. В скрипте lab_04_01_soln.sql декларируйте две переменные: dept_name
такого же типа, что и столбец department.department_name и связанную
переменную dept_id типа NUMBER.
b. Присвойте переменной dept_name значение «Education» в секции
декларации.
c. Прибавьте к полученному максимальному значению номера отдела 10 и
присвойте полученную цифру в переменную dept_id.
d. Воспользуйтесь значениями переменных dept_name и dept_id в инструкции
INSERT в таблицу department. Для заполнения столбца location_id
используйте NULL значение.
e. С помощью атрибута SQL%ROWCOUNT узнайте количество строк
обработанных инструкцией INSERT.
f. С помощью SELECT инструкции убедитесь, что строчка добавлена.
g. Сохраните скрипт в файле lab_04_02_soln.sql.
VARIABLE dept_id NUMBER(10); DECLARE max_deptno NUMBER(10); dept_name departments.department_name%type:='Education'; BEGIN SELECT MAX(department_id) INTO max_deptno FROM departments; :dept_id:=max_deptno+10; INSERT INTO departments (department_id,department_name) VALUES (:dept_id,dept_name); DBMS_OUTPUT.ENABLE(); DBMS_OUTPUT.PUT_LINE(SQL%rowcount); DBMS_OUTPUT.PUT_LINE(:dept_id); DBMS_OUTPUT.PUT_LINE(max_deptno); END; / |