Отчет. Отчет по лабораторной работе 5 по дисциплине Тема создание хранимых процедур и функций в oracle. Вариант 18 Выполнил студент группы Подпись, дата Инициалы, фамилия
Скачать 267.7 Kb.
|
Факультет информационных технологий и компьютерной безопасности(факультет) Кафедра Систем автоматизированного проектирования и информационных системОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ № 5по дисциплине Тема СОЗДАНИЕ ХРАНИМЫХ ПРОЦЕДУР И ФУНКЦИЙ В ORACLE. Вариант 18 Выполнил студент группы Подпись, дата Инициалы, фамилия Принял ………………………………………Подпись, дата Инициалы, фамилия Защищена ___________________ Оценка _____________________________ дата 2022 Лабораторная работа № 5 «(СОЗДАНИЕ ХРАНИМЫХ ПРОЦЕДУР И ФУНКЦИЙ В ORACLE)» 1 Цель работы Научиться создавать и использовать хранимые процедуры и функции в схемах Oracle. 2 Задание на лабораторную работу 1. Проработка всех примеров, анализ результатов их выполнения в утилите SQL *Plus Worksheet. Проверка наличия созданных процедур в текущей схеме. 2. Проверка всех выполненных примеров в утилите Enterprise MANAGER Console. 3. Выполнение всех примеров и заданий по ходу лабораторной работы. 4. Выполнение индивидуальных заданий по вариантам. 3 Краткие теоретические сведения (не обязательно) 4 Ход выполнения 1. Создайте данную процедуру в разделе Schema/ Procedure в схеме ADMIN_BOOKS через утилиту Enterprise MANAGER Console. Запустите ее в утилите SQL *Plus Worksheet с помощью программы: Рисунок 1 – Создание процедуры Рисунок 2 – Вызов процедуры Рисунок 3 – Результат вызова процедуры 2. Создайте данную процедуру в разделе Schema/ Procedure в схеме ADMIN_BOOKS через утилиту Enterprise MANAGER Console. Запустите ее в утилите SQL *Plus Worksheet с помощью программы: Рисунок 4 – Создание процедуры Рисунок 5 – Вызов процедуры Рисунок 6 – Результат вызова процедуры 3. Создайте данную процедуру в разделе Schema/ Procedure в схеме ADMIN_BOOKS через утилиту Enterprise MANAGER Console. Запустите ее в утилите SQL *Plus Worksheet с помощью программы: Рисунок 7 – Создание процедуры Рисунок 8 – Вызов процедуры Рисунок 9 – Результат вызова процедуры 4. Создайте данную процедуру в разделе Schema/ Procedure в схеме ADMIN_BOOKS через утилиту Enterprise MANAGER Console. Запустите ее в утилите SQL *Plus Worksheet с помощью программы: Рисунок 10 – Создание процедуры Рисунок 11 – Вызов процедуры Рисунок 12 – Результат вызова процедуры 5. Создайте данную процедуру в разделе Schema/ Procedure в схеме ADMIN_BOOKS через утилиту Enterprise MANAGER Console. Запустите ее в утилите SQL *Plus Worksheet с помощью программы: Рисунок 13 – Создание процедуры Рисунок 14 – Вызов процедуры Рисунок 15 – Результат вызова процедуры 6. Создайте данную процедуру в разделе Schema/ Procedure в схеме ADMIN_BOOKS через утилиту Enterprise MANAGER Console. Запустите ее в утилите SQL *Plus Worksheet с помощью программы: Рисунок 16 – Создание процедуры Рисунок 17 – Вызов процедуры Рисунок 18 – Результат вызова процедуры 7. Создайте данную функцию в разделе Schema/ Function в схеме ADMIN_BOOKS через утилиту Enterprise MANAGER Console. Запустите ее в утилите SQL *Plus Worksheet с помощью программы: Рисунок 19 – Создание функции Рисунок 20 – Вызов функции Рисунок 21 – Результат вызова функции 8. Создайте данную функцию в разделе Schema/ Function в схеме ADMIN_BOOKS через утилиту Enterprise MANAGER Console. Запустите ее в утилите SQL *Plus Worksheet с помощью программы: Рисунок 22 – Создание функции Рисунок 23 – Вызов функции Рисунок 24 – Результат вызова функции Вариант 18 1. Вывести список ремонтных работ, выполненных определенным мастером. create or replace procedure Works_List_By_Master ( m_id in int, cursor1 out SYS_REFCURSOR ) is begin open cursor1 for select * from Works where master_id = m_id; end Works_List_By_Master; SET SERVEROUTPUT ON Declare type cur_select1 is ref cursor; cur_select2 cur_select1; w_id works.work_id%type; w_name works.work_name%type; w_master_id works.master_id%type; w_cost works.cost%type; begin Works_List_By_Master(1, cur_select2); loop FETCH cur_select2 INTO w_id, w_name, w_master_id, w_cost; exit when cur_select2%NOTFOUND OR cur_select2%NOTFOUND IS NULL; DBMS_OUTPUT.PUT_LINE(cur_select2%ROWCOUNT || '. ' || w_name || '. Стоимость: ' || w_cost); end loop; close cur_select2; end; Рисунок 25 – Результат работы процедуры 2. Вывести список этапов работ, входящих в работы, в названии которых встречается указанное слово. create or replace procedure Stages_In_Works_Like ( w_name in nvarchar2, cursor1 out SYS_REFCURSOR ) is begin open cursor1 for select s.stage_name from stages s join work_stages ws on ws.stage_id = s.stage_id join works w on w.work_id = ws.work_id where w.work_name like '%'||trim(w_name)||'%'; end Stages_In_Works_Like; SET SERVEROUTPUT ON Declare type cur_select1 is ref cursor; cur_select2 cur_select1; s_name stages.stage_name%type; begin Stages_In_Works_Like('крас', cur_select2); loop FETCH cur_select2 INTO s_name; exit when cur_select2%NOTFOUND OR cur_select2%NOTFOUND IS NULL; DBMS_OUTPUT.PUT_LINE(cur_select2%ROWCOUNT || '. ' || s_name); end loop; close cur_select2; end; Рисунок 26 – Результат работы процедуры 3. Вывести сумму стоимости этапов ремонтных работ для работ с кодом в указанном диапазоне. CREATE OR REPLACE PROCEDURE Stages_Cost_In_Works (id_1 in int, id_2 in int, total_sum OUT number) IS begin select sum(s.cost) into total_sum from stages s join work_stages ws on ws.stage_id = s.stage_id where ws.work_id between id_1 and id_2; end Stages_Cost_In_Works; SET SERVEROUTPUT ON DECLARE I NUMBER; begin Stages_Cost_In_Works (1, 3, I); DBMS_OUTPUT.PUT_LINE(I); end; Рисунок 27 – Результат работы процедуры 4. Вывести список мастеров с датой приема на работу в указанном диапазоне. create or replace procedure Masters_Hired_In_Dates ( d1 in date, d2 in date, cursor1 out SYS_REFCURSOR ) is begin open cursor1 for select * from masters where hire_date between d1 and d2; end Masters_Hired_In_Dates; SET SERVEROUTPUT ON Declare type cur_select1 is ref cursor; cur_select2 cur_select1; m_id masters.master_id%type; m_name masters.fullname%type; m_hire_date masters.hire_date%type; begin Masters_Hired_In_Dates( to_date('10.04.2022', 'dd-mm-yyyy'), to_date('20.04.2022', 'dd-mm-yyyy'), cur_select2); loop FETCH cur_select2 INTO m_id, m_name, m_hire_date; exit when cur_select2%NOTFOUND OR cur_select2%NOTFOUND IS NULL; DBMS_OUTPUT.PUT_LINE(cur_select2%ROWCOUNT || '. ' || m_name || '. Дата найма: ' || m_hire_date); end loop; close cur_select2; end; Рисунок 28 – Результат работы процедуры Вывод В результате выполнения лабораторной работы № 5 была изучена работа хранимых процедур и функций в схемах Oracle, выполнены индивидуальные задания по варианту 18. Также были проработаны все примеры, приведенные в тексте лабораторной работы. |