Студопедия

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

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

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






Пояснения к выполнению работы. Для освоения программирования хранимых процедур используем пример базы данных в табличном пространстве DB_Books






Для освоения программирования хранимых процедур используем пример базы данных в табличном пространстве DB_Books, которая была создана в лабораторной работе №1. При выполнении примеров и заданий обращайте внимание на соответствие названий таблиц и других объектов проекта.

Хранимые процедуры представляют собой набор команд, состоящий из одного или нескольких операторов SQL или функций и сохраняемый в базе данных в откомпилированном виде.

Процедуры и функции - это объекты базы данных и, следовательно, они создаются командой CREATE и уничтожаются командой DROP. При созда­нии процедуры и функции должны быть определены: имя объекта, перечень и типы параметров и логикаработы процедуры или функции, описанные на языке PL/SQL.

Чтобы создать процедуру или функцию, необходимо иметь системные привилегии CREATE PROCEDURE. Для создания процедуры, функции или пакета в схеме, отличной от текущей схемы пользователя, требуются системные привила на CREATE ANY PROCEDURE. После определения имени новой процедуры или функции необходимо задать ее имена, типы и виды параметров. Для каждого параметра должен быть указан один из видов параметра - IN, OUT или IN OUT. Вид параметра IN предполагает, что значение параметра должно быть определено при обращении к процедуре и не изменяется процедурой.

Попытка изменить в теле процедуры параметрвида IN приведет к сообщению об ошибке. Вид параметра OUT предполагает изменение значения параметра в процессе работы процедуры, то есть параметр вида OUT - это возвращаемый параметр. Параметр INOUT - это параметр, которому при вызове должно быть присвоено значение, которое может быть изменено в теле процедуры. Параметры процедур или функций имеют виды, присвоенные по умолчанию.

Дополнительно к определениям, необходимым для процедуры, в определении функции должен быть тип данных единственного возвращаемого функцией значения. Возврат значения функции выполняется командой PL/SQL RETURN. Оператор определения процедуры Oracle использует следующий синтаксис:

 

CREATE [OR REPLACE] PROCEDURE

[ имя_схемы. ] имя_процедуры

[ (имя_параметра [{IN | OUT | IN OUT}] тип_данных

[, имя_параметра [{IN | OUT | IN OUT}] тип_данных... ])]

{IS | AS}

программа_нa_PL/SQL

 

Напоминание: При классическом описании синтаксиса { } обозначают обязательный выбор одной из альтернатив, | – разделяет альтернативы, [ ] – указывают на необязательные параметры, которые могут быть опущены.

 

Ключевое слово OR REPLACE указывает на безусловное замещение старого текста процедуры. Если ключевое слово OR REPLACE не указано, и процедура определена, то замещения старого значения кода процедуры не происходит, и возвращается сообщение об ошибке.

В описании переменных процедуры не используется ключевое слово DECLARE. Блок определения данных начинается сразу после ключевого слова AS (или IS – по выбору пользователя).

 

Напомним, что функции PL/SQL отличаются от процедур тем, что возвращают в вызывающую среду значение параметра.

Оператор определения функции Oracle использует следующий синтаксис:

 

CREATE [OR REPLACE] FUNCTION

[ имя_схемы. ] имя_функции

[ (имя_параметра [{IN | OUT | IN OUT}] тип_данных

[, имя_параметра [{IN | OUT | IN OUT}] тип_данных... ])]

RETURN тип_данных

{IS | AS}

программа_нa_PL/SQL

 

Описание типа данных для возвращаемою функцией значения требуется обязательно. При описании переменных функции также, как и при описании переменных процедуры, не используется ключевое слово DECLARE. Блок определения данных начинается сразу после ключевого слова IS (или AS, по выбору пользователя).

 






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