Составители:
Рубрика:
ГУАП МЦИТ
Введение в «ORACLE»
Под ред. проф. В.М.Космачёва
63
10. Сделать выборку из таблицы STUDENT с использованием курсора и цикла с методом %FOUND или
%NOTFOUND для получения данных о студентах, живущих в Москве, и использовать пользовательскую
исключительную ситуацию для исключения среди выбранных студентов тех, у которых стипендия меньше 200.
11. Сделать выборку из таблицы SUBJECT с использованием курсора и цикла с методом %FOUND или
%NOTFOUND для получения данных о предметах во 2-ом семестре с использованием пользовательской
исключительной ситуации для исключения из полученного списка предметов с количеством часов 72.
12. Сделать выборку из таблицы EXAM_MARKS с использованием курсора и цикла с методом %FOUND или
%NOTFOUND для получения сведений об экзаменах, сданных в определенную дату, и исключить с помощью
пользовательской исключительной ситуации данные об оценках, полученных по заданному номеру предмета.
13. Сделать выборку из таблицы SUBJLECT с использованием курсора и цикла с методом %FOUND или
%NOTFOUND для получения данных о преподавателях, читающих предмет с данным номером, и исключить из
полученного множества данные с помощью пользовательской исключительной ситуации о преподавателях с
заданной фамилией.
2.3.8. Создание пользовательских процедур и функций
Подпрограммы (процедуры и функции) в PL/SQL бывают хранимые и локальные. Хранимые подпрограммы во
многом отличаются от локальных.Если подпрограмма должна будет вызываться из многих блоков, то ее делают
хранимой, она хранится в базе данных. Короткие процедуры и функции рекомендуется объявлять локально в блоке,
если они вызываются только из одного конкретного фрагмента программы. Хранимые подпрограммы (процедуры и
функции) хранятся в базе данных в откомпилированном виде и могут вызываться из любого блока
.
В этом разделе будем рассматривать хранимые подпрограммы. Хранимые процедуры и функции — это объекты базы
данных и, следовательно, они создаются командой CREATE и уничтожаются командой DROP. При создании
процедуры и функции должны быть определены: имя объекта, перечень и тип параметров и логика работы процедуры
или функции, описанные на языке PL/SQL
Чтобы создать процедуру или функцию, необходимо иметь системные привилегии CREATE PROCEDURE. Для
создания процедуры, функции или пакета в схеме, отличной от текущей схемы пользователя, требуются системные
привилегии CREATE ANY PROCEDURE. После определения имени новой процедуры или функции необходимо
задать ее имена, типы и виды параметров. Для каждого параметра должен быть указан один из видов параметра —
IN, OUT или IN OUT. Вид параметра IN предполагает, что значение параметра должно быть определено при
обращении к процедуре и не изменяется процедурой.
Попытка изменить в теле процедуры параметр вида IN приведет к сообщению об ошибке. Вид параметра OUT
предполагает изменение значения параметра в процессе работы процедуры, то есть параметр вида OUT — это
возвращаемый параметр. Параметр IN OUT — это параметр, которому при вызове должно быть присвоено значение,
которое может быть изменено в теле процедуры. Параметры процедур или функций имеют виды, присвоенные по
умолчанию
Дополнительно к определениям, необходимым для процедуры, в определении функции должен быть указан тип
данных единственного возвращаемого функцией значения. Возврат значения функции выполняется командой PL/SQL
RETURN. Оператор определения процедуры ORACLE использует следующий синтаксис:
CREATE [OR REPLACE] PROCEDURE [схема.]имя_процедуры
[ (имя_параметра[{IN | OUT | IN OUT}] тип_данных
[,имя_параметра[{IN | OUT | IN OUT}] тип_данных...])]
{IS | AS}
Ключевое слово OR REPLACE указывает на безусловное замещение старого текста процедуры. Если ключевое слово
OR REPLACE не указано, и процедура определена, то замещения старого значения кода процедуры не происходит, и
возвращается сообщение об ошибке.
В описании переменных процедуры не используется ключевое слово DECLARE. Блок определения данных
начинается сразу после ключевого слова IS (или AS, по выбору пользователя).
Рассмотрим пример создания процедуры, которая заносит в таблицу значения, зависящие от числового параметра.
Пусть таблица сформирована предложением:
CREATE TABLE SUBJLECT(LECT_ID NUMBER, SUBJ_ID NUMBER);
Пример 2.3.25
SQL>CREATE OR REPLACE PROCEDURE InsRec ( Argl IN NUMBER, Arg2 IN NUMBER ) IS
Страницы
- « первая
- ‹ предыдущая
- …
- 61
- 62
- 63
- 64
- 65
- …
- следующая ›
- последняя »
