Описание общедоступных подпрограмм пакета можно получить с помощью команды SQL*Plus DESCRIBE. Команда показывает описание подпрограмм только в том случае, если спецификация пакета скомпилирована без ошибок, тело пакета при этом может отсутствовать.
SQL> CREATE OR REPLACE PACKAGE comm_package
2 IS
3 g_comm NUMBER := 10;
4 FUNCTION avg_comm (v_comm NUMBER) RETURN NUMBER;
5 PROCEDURE max_comm (v_job VARCHAR2);
6 END comm_package;
7 /
Package created.
SQL> DESCRIBE comm_package
FUNCTION AVG_COMM RETURNS NUMBER
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
V_COMM NUMBER IN
PROCEDURE MAX_COMM
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
V_JOB VARCHAR2 IN
Основные средства Oracle, например, встроенные функции, находятся в стандартном пакете Oracle, который имеет имя STANDART. Программные конструкции этого пакета автоматически доступны из любого блока PL/SQL любому пользователю базы данных. Если Вы обращаетесь к объектам стандартного пакета STANDART, имя пакета в качестве префикса указывать не обязательно.
Кроме пакета STANDART в поставку Oracle входит ряд пакетов, которыми могут пользоваться разработчики и администраторы базы данных. Эти пакеты отличаются префиксами имен: DBMS_ – пакеты для работы с базой данных, UTL_ – утилиты общего назначения. При обращении к объектам этих пакетов необходимо указывать имя пакета в качестве префикса к имени объекта.
Пакет |
Описание |
DBMS_JOB |
Запуск пользовательских заданий в определенное время |
DBMS_LOCK |
Управление блокировками базы данных |
DBMS_OUTPUT |
Вывод строк текста в буфер для дальнейшего получения и вывода |
DBMS_PIPE |
Получение и пересылка сообщений между сессиями при помощи каналов |
DBMS_TRANSACTION |
Управление транзакциями SQL |
DBMS_LOB |
Работа с большими объектами |
UTL_FILE |
ASCII операции чтения/записи системных файлов |
Пакет DBMS_OUTPUT позволяет отображать информацию, выводимую из блоков PL/SQL, для их отладки и тестирования.
Процедуры и функции пакета формируют выходной буфер:
· Каждая строка буфера хранится в закрытой таблице PL/SQL
· Каждая строка буфера завершается символом новой строки
· Каждая строка буфера не должна превышать 255 байт, включая символ новой строки
· Размер буфера должен быть в диапазоне от 2000 до 1000000 байт
Процедуры и функции |
Описание |
PUT |
Добавляет текст к текущей строке буфера |
NEW_LINE |
Добавляет символ конца строки в буфер. Несколько вызовов подряд не формирует пустые строки |
PUT_LINE |
Добавляет строку в буфер |
GET_LINE |
Получает текущую строку буфера |
GET_LINES |
Получает массив строк буфера |
ENABLE/DISABLE |
Включает/выключает вызов подпрограмм пакета. В процедуре ENABLE можно задать размер буфера |
SQL> BEGIN
2 DBMS_OUTPUT.enable;
3 DBMS_OUTPUT.put('It ');
4 DBMS_OUTPUT.put('is ');
5 DBMS_OUTPUT.put('my string');
6 DBMS_OUTPUT.new_line;
7 END;
8 /
It is my string
PL/SQL procedure successfully completed.
Пакет DBMS_PIPE позволяет отправлять сообщения из одного сеанса в другой через именованные каналы.
Процедуры и функции |
Описание |
PACK_MESSAGE |
Упаковывает сообщение в локальный буфер сообщений (сообщение может иметь тип данных VACHAR2, NUMBER, DATE) |
PACK_MESSAGE_ROWID |
Упаковывает сообщение, тип данных которого ROWID, в локальный буфер сообщений |
SEND_MESSAGE |
Отправляет сообщение, содержащееся в локальном буфере в именованный канал |
RECEIVE_MESSAGE |
Получает сообщение из именованного канала и кладет его в локальный буфер сообщений |
UNPACK_MESSAGE |
Распаковывает сообщение из локального буфера сообщений (сообщение может иметь тип данных VACHAR2, NUMBER, DATE) |
UNPACK_MESSAGE_ROWID |
Распаковывает сообщение, тип данных которого ROWID, из локального буфера сообщений |
SQL> DECLARE
2 l_var NUMBER;
3 BEGIN
4 DBMS_PIPE.pack_message('It is my message');
5 l_var := DBMS_PIPE.send_message('p1');
6 END;
7 /
PL/SQL procedure successfully completed.
SQL> DECLARE
2 l_var NUMBER;
3 l_msg VARCHAR2(50);
4 BEGIN
5 l_var := DBMS_PIPE.receive_message('p1');
6 DBMS_PIPE.unpack_message(l_msg);
7 DBMS_OUTPUT.put_line(l_msg);
8 END;
9 /
It is my message
PL/SQL procedure successfully completed.
Пакет UTL_FILE позволяет читать из текстовых файлов операционной системы и писать в них.
Процедуры и функции |
Описание |
FOPEN |
Функция открывает файл операционной системы и возвращает указатель на файл (тип данных – RECORD) для последующих операций |
PUT |
Процедура добавляет текст к текущей строке в открытом файле |
NEW_LINE |
Процедура добавляет символ конца строки к текущей строке в открытом файле |
PUT_LINE |
Процедура записывает текстовую строку с символом конца строки в открытый файл |
GET_LINE |
Процедура читает текстовую строку из открытого файла операционной системы |
FCLOSE |
Процедура закрывает файл операционной системы |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.