Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Удаление хранимой процедуры или функции






Если характер использования приложения изменился, то для освобождения ресурсов базы данных может потребоваться уничтожить процедуру пли функцию. В собственной схеме пользователю не требуются дополнительные привилегии для уничтожения процедуры пли функции. Для уничтожения процедуры или функции в схеме другого пользователя необходимо наличие привилегии 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_№_варианта_№_задания.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.