![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Удаление хранимой процедуры или функции
Если характер использования приложения изменился, то для освобождения ресурсов базы данных может потребоваться уничтожить процедуру пли функцию. В собственной схеме пользователю не требуются дополнительные привилегии для уничтожения процедуры пли функции. Для уничтожения процедуры или функции в схеме другого пользователя необходимо наличие привилегии DROP ANY PROCEDURE.
DROP PROCEDURE [имя_схемы.]имя_процедуры или DROP FUNCTION [имя_схемы.]имя_функции Пример создания процедуры без параметров: CREATE OR REPLACE PROCEDURE ADMIN_BOOKS.Count_Books IS perem1 integer; begin Select count(Code_book) INTO perem1 from ADMIN_BOOKS.Books; end Count_books;
Задание 1. Создайте данную процедуру в разделе Schema/ Procedure в схеме ADMIN_BOOKS через утилиту Enterprise MANAGER Console. Запустите ее в утилите SQL *Plus Worksheet с помощью программы: begin ADMIN_BOOKS.Count_Books; end; Проверьте результат.
Пример создания процедуры c входным параметром: CREATE OR REPLACE PROCEDURE ADMIN_BOOKS.Count_Books_Pages (Count_pages IN NUMBER) IS perem2 integer; begin Select count(Code_book) INTO perem2 from Books WHERE Pages> =Count_pages; end Count_Books_Pages; Задание 2. Создайте данную процедуру в разделе Schema/ Procedure в схеме ADMIN_BOOKS через утилиту Enterprise MANAGER Console. Запустите ее в утилите SQL *Plus Worksheet с помощью программы: begin ADMIN_BOOKS.Count_Books_Pages(12); end; Проверьте результат.
Пример создания процедуры c входными параметрами: CREATE OR REPLACE PROCEDURE ADMIN_BOOKS.Count_Books_Title (Count_pages IN Int, Title IN Char) IS perem3 integer; begin Select count(Code_book) INTO perem3 from Books WHERE Pages> =Count_pages AND Title_book LIKE trim(Title)||'%'; end Count_Books_Title;
Задание 3. Создайте данную процедуру в разделе Schema/ Procedure в схеме ADMIN_BOOKS через утилиту Enterprise MANAGER Console. Запустите ее в утилите SQL *Plus Worksheet с помощью программы: begin ADMIN_BOOKS.Count_Books_Title (100, 'П'); end; Проверьте результат. Пример создания процедуры c входными параметрами и выходным параметром: CREATE OR REPLACE PROCEDURE ADMIN_BOOKS.Count_Books_Itogo (Count_pages IN Int, Title IN Char, Itogo OUT Int) IS begin Select count(Code_book) INTO Itogo from Books WHERE Pages> =Count_pages AND Title_book LIKE '%'||trim(Title)||'%'; end Count_Books_Itogo; Задание 4. Создайте данную процедуру в разделе Schema/ Procedure в схеме ADMIN_BOOKS через утилиту Enterprise MANAGER Console. Запустите ее в утилите SQL *Plus Worksheet с помощью программы: SET SERVEROUTPUT ON DECLARE I INTEGER; begin ADMIN_BOOKS.Count_Books_Itogo (56, 'Руслан и Людмила', I); DBMS_OUTPUT.PUT_LINE(I); end; Проверьте результат. Пример создания процедуры без параметров для увеличения значения ключевого поля в таблице Purchases в 2 раза: CREATE OR REPLACE PROCEDURE ADMIN_BOOKS.update_proc IS BEGIN UPDATE Purchases SET Code_purchase = Code_purchase*2; END update_proc;
Задание 5. Создайте данную процедуру в разделе Schema/ Procedure в схеме ADMIN_BOOKS через утилиту Enterprise MANAGER Console. Запустите ее в утилите SQL *Plus Worksheet с помощью программы: begin ADMIN_BOOKS.update_proc; end; Процедура не возвращает никаких данных. Пример создания процедуры с входным параметром и значением по умолчанию для увеличения значения ключевого поля в таблице Purchases в заданное количество раз (по умолчанию в 2 раза): CREATE OR REPLACE PROCEDURE ADMIN_BOOKS.update_proc2 (p IN INT: = 2) IS BEGIN UPDATE Purchases SET Code_purchase = Code_purchase*p; END update_proc2;
Задание 6. Создайте данную процедуру в разделе Schema/ Procedure в схеме ADMIN_BOOKS через утилиту Enterprise MANAGER Console. Запустите ее в утилите SQL *Plus Worksheet с помощью программы: begin ADMIN_BOOKS.update_proc2; end;
или begin ADMIN_BOOKS.update_proc2(4); end; Процедура не возвращает никаких данных. Пример создания функции c входными параметрами и RETURN: CREATE OR REPLACE function ADMIN_BOOKS.checkname (param IN int, ch IN char) RETURN integer AS type_end integer; begin SELECT count(Name_author) INTO type_end FROM authors WHERE Code_author = param AND Name_author=ch; RETURN type_end; end checkname; Задание 7. Создайте данную функцию в разделе Schema/ Function в схеме ADMIN_BOOKS через утилиту Enterprise MANAGER Console. Запустите ее в утилите SQL *Plus Worksheet с помощью программы: SET SERVEROUTPUT ON DECLARE I INTEGER; begin I: =ADMIN_BOOKS.checkname(12, 'Пушкин А.С.'); DBMS_OUTPUT.PUT_LINE(I); end;
Пример создания функции с входными и выходным параметрами. Создать функцию для определения количества заказов, совершенных за указанный период: CREATE OR REPLACE function ADMIN_BOOKS.count_purchases (d1 DATE, d2 DATE) RETURN integer AS count_ integer; begin SELECT count(Code_purchase) INTO count_ from Purchases WHERE Date_order BETWEEN d1 AND d2; RETURN count_; end count_purchases; Задание 8. Создайте данную функцию в разделе Schema/ Function в схеме ADMIN_BOOKS через утилиту Enterprise MANAGER Console. Запустите ее в утилите SQL *Plus Worksheet с помощью программы: SET SERVEROUTPUT ON DECLARE I INTEGER; begin I: =ADMIN_BOOKS.count_purchases(TO_DATE('12.06.2007', 'dd-mm-yyyy'), TO_DATE('30.06.2007', 'dd-mm-yyyy')); DBMS_OUTPUT.PUT_LINE(I); end; Проверьте результат. Варианты заданий к лабораторной работе №5 Общие положения В лабораторной работе в примерах тела процедур и функций написаны так, что их можно полностью копировать, вставлять в утилиту SQL *Plus Worksheet и запускать (F5) для их создания на сервере. Если создавать процедуру или функцию в Enterprise MANAGER Console через мастер создания, то первая строка с конструкцией CREATE OR REPLACE PROCEDURE имя_процедуры или CREATE OR REPLACE FUNCTION имя_функции не копируется, а само имя_процедуры или имя_функции заносится в поле Name. Создать примеры хранимых процедур и функций в вашем табличном пространстве. Проверьте их работу. По вариантам на базе таблиц, созданных в 1 лабораторной работе, в утилите SQL *Plus Worksheet создайте процедуры и функции, причем каждую программу сохранять на диске в отдельном файле с названием ФамилияСтудента_ЛАб_5_№_варианта_№_задания.
|