orafce. Совместимость логики Oracle для PL/Pgsql
Версия: 4.4.0.
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: отсутствуют.
Схема размещения:
ext
.
Модуль orafce
реализует некоторые функции из СУБД Oracle, которые отсутствуют или ведут себя по-другому в СУБД PostgreSQL.
Модуль является функциональным расширением совместимости для логики, написанной под Oracle.
Функционал
dbms_alert
Пакет добавляет модель межсессионного взаимодействия.
Тип | Имя | Входные переменные функции | Выходные переменные функции | Описание |
---|---|---|---|---|
Процедура | _signal | name::text ,message::text | – | Internal |
Триггер | deferred_signal | – | trigger | Internal |
Процедура | register | name::text | – | Регистрация ipc c именем name |
Процедура | remove | name::text | – | Удаление ipc с именем name |
Процедура | removeall | – | – | Удаление всех ipc |
Процедура | set_defaults | sensitivity::float8 | – | Определение sensitivity |
Процедура | signal | event::text ,_message::text | – | Регистрация сигнала для ipc event с сообщением _message |
Функция | waitany | timeout::float8 | name::text ,message::text ,status::int | Ожидание сигналов в течение timeout секунд |
Функция | waitone | name::text ,timeout::float8 | message::text ,status::int | Ожидание сигнала в ipc name в течение timeout секунд |
dbms_assert
Пакет добавляет дополнительные проверки в целях защиты от SQL injection.
Тип | Имя | Входные переменные функции | Выходные переменные функции | Описание |
---|---|---|---|---|
Функция | enquote_literal | str::varchar | ::varchar | Квотирование строки; верификация двойного квотирования строки |
Функция | enquote_name | str::varchar ,[lowercase::bool] | ::varchar | Квотирование имени объекта SQL. Опциональный параметр - приведение имени к нижнему регистру ВНИМАНИЕ: поведение отличается от Oracle, где имя приводится к верхнему регистру |
Функция | noop | str::varchar | ::varchar | Функция-заглушка. Изменений не производится. |
Функция | qualified_sql_name | str::varchar | ::varchar | Проверка того, что входной параметр является правильным именем объекта SQL |
Функция | schema_name | str::varchar | ::varchar | Проверка существования в БД определенной схемы |
Функция | simple_sql_name | str::varchar | ::varchar | Проверка применимости входного параметра для использования в качестве идентификатора SQL |
Функция | object_name | str::varchar | ::varchar | Проверка существования нефункционального объекта в БД с именем входного параметра |
dbms_output
Пакет добавляет консольный вывод сообщений.
В Pangolin используется RAISE
, однако поведение функций пакета отличается от принятого в Pangolin порядка выдачи сообщений. Функции пакета представляют собой очередь сообщений и могут быть прочитаны внутри сеанса.
Тип | Имя | Входные переменные функции | Выходные переменные функции | Описание |
---|---|---|---|---|
Процедура | disable | – | – | Отключение вывода сообщений |
Процедура | enable | [buffer_size::int] | – | Включение вывода сообщений. Опциональный параметр указывает размер буфера в байтах |
Функция | get_line | – | line::text ,status::int | Получение сообщений |
Функция | get_lines | numlines::int | lines::text[] ,numlines::int | Получение блока последних сообщений |
Процедура | new_line | – | – | Добавление нового пустого сообщения |
Функция | put | a::text | – | Добавление нового сообщения (блок) |
Функция | put_line | a::text | – | Добавление нового сообщения (строка) |
Процедура | serveroutput | ::bool | – | Переключение вывода сообщений в консоль |
dbms_pipe
Пакет добавляет эмуляцию каналов Oracle. Реализация основана на использовании shared memory.
- Максимальное количество каналов - 50;
- Длина канала определяется не в байтах, а в количестве элементов;
- Возможна отправка сообщений без ожидания;
- Возможна отправка пустых сообщений;
- Тип
timestamp
дляnext_item_type
=13
; - СУБД Pangolin не поддерживает тип
RAW
. Используйте типbytea
.
Тип | Имя | Входные переменные функции | Выходные переменные функции | Описание |
---|---|---|---|---|
Представление | db_pipes | – | name::varchar ;items::int4 ;size::int4 ;limit::int4 ;private::bool ;owner::varchar | Список каналов |
Процедура | create_pipe | ::text ;[::int4,[::bool]] | – | Передача параметров (имени, размера, признака) при создании канала |
Функция | next_item_type | ::int4 | Определение формата сообщения в канале: 0 - канал пуст; 9 - numeric /int4 /int8 ;11 - text ;12 - date ;13 - timestamptz ;23 - byte ;24 - record | |
Процедура | pack_message | ::bytea ;::int4 ;::int8 ;::numeric ;::text ;::date ;::timestamptz ;::bytea ;::record | – | Добавление сообщения в канал |
Процедура | purge | ::text | – | Очистка канала. Параметр - имя канала |
Функция | receive_message | ::text [::int4] | ::int4 | Прием сообщения. Копирование сообщения в локальный буфер. Параметры: - имя канала; - время ожидания в секундах. Результат: код возврата. 0 - успех; 1 - тайм-аут; 2 - Ошибка: размер сообщения превышает размер буфера; 3 - Прерывание; ? - Недостаточно привилегий |
Процедура | remove_pipe | ::text | – | Удаление канала. Параметр - имя канала |
Процедура | reset_buffer | – | – | Очистка буфера |
Функция | send_message | ::text[::int4 [::int4]] | ::int4 | Передача сообщения. Параметры: - имя канала; - тайм-аут в секундах; - максимальный размер канала. Канал, созданный этой функцией, будет удален после передачи сообщения (в отличие от канала, созданного функцией create_pipe ).Код возврата совпадает с кодами функции receive_message |
Функция | unique_session_name | – | ::varchar | Возвращает уникальное имя сессии, в которой создан канал |
Функция | unpack_message_bytea | – | ::bytea | Распаковка сообщения bytea |
Функция | unpack_message_date | – | ::date | Распаковка сообщения date |
Функция | unpack_message_number | – | ::numeric | Распаковка сообщения number |
Функция | unpack_message_record | – | ::record | Распаковка сообщения record |
Функция | unpack_message_timestamp | – | ::timestamptz | Распаковка сообщения timestamp |
Функция | unpack_message_text | – | ::text | Распаковка сообщения text |
dbms_random
Пакет добавляет псеводслучайные числа Oracle.
Тип | Имя | Входные переменные функции | Выходные переменные функции | Описание |
---|---|---|---|---|
Процедура | initialize | ::int4 | – | Инициализация генератора псевдослучайных чисел c заданным зерном (seed ) |
Функция | normal | – | ::float | Генерация числа в нормальном распределении |
Функция | random | – | ::int4 | Генерация числа в полном диапазоне int4 (-2^31..2^31) |
Процедура | seed | ::int4 | – | Передача зерна (seed ) генератору |
Процедура | seed | ::text | – | Передача зерна (seed ) генератору |
Функция | string | opt::text ;len::int4 | text | Генерация случайной строки длиной len .Параметры: 'u','U' - UPPERCASE ALPHA; 'l','L' - lowercase alpha; 'a','A' - MiXeD AlPhA; 'x','X' – UPPERCASE ALPHANUMERIC; 'p','P' - Any printable characters |
Процедура | terminate | – | – | Окончание работы пакета |
Функция | value | [ low::float, high::float] | – | Генерация псевдослучайного номера из диапазона с нижней границей low включительно и верхней границей high не включительно) |
dbms_utility
Пакет добавляет просмотр стека вызовов.
Тип | Имя | Входные переменные функции | Выходные переменные функции | Описание |
---|---|---|---|---|
Функция | format_call_stack | [ ::text ] | text | Возвращает стек вызовов внутри блока pl/pgsql |
utl_file
Пакет добавляет операции с файловой системой.
В каждой сессии допускается до 10 открытых файловых дескрипторов. Длина строки ограничена 32 Кб.
Тип | Имя | Входные переменные функции | Выходные переменные функции | Описание |
---|---|---|---|---|
Таблица | utl_file_dir | dir::text ;dirname::text | – | Таблица алиасов |
Домен | file_type | file_type::integer | – | Домен для хранения файлового дескриптора |
Функция | fclose | file::utl_file.file_type | ::utl_file.file_type | Закрытие файлового дескриптора |
Процедура | fclose_all | – | – | Закрытие всех открытых файловых дескрипторов |
Процедура | fcopy | src_location::text ;src_filename::text ;dest_location::text ;dest_filename::text ;[ start_line::int4 ] ;[[ end_line::int4]] | – | Копирование файла. Передаваемые параметры: - исходный каталог; - исходное имя файла; - каталог назначения; - имя файла назначения. Опционально: - начальная строка; - конечная строка |
Процедура | fflush | file::utl_file.file_type | – | Сброс буфера на диск |
Функция | fgetattr | location::text ;filename::text | fexist::boolean ;file_length::bigint ;block size::int4 | Получение атрибутов файла |
Функция | fopen | location::text ;filename::text ;open_mode::text ;[ max_linesize::int4 ] ;[[ encoding::name ]] | ::utl_file.file_type | Открытие файлового дескриптора. Параметр open_mode стандартный (r , rw , a , ...) |
Процедура | fremove | location::text ;filename::text | – | Удаление файла |
Процедура | frename | location::text ;filename::text ;[ dest_dir::text ] ;[ dest_file::text ] ;[[ overwrite::bool ]] | – | Переименование/перемещение файла |
Функция | get_line | file::utl_file.file_type ;len::int4 | buffer::text | Получение строки из открытого файла |
Функция | get_nextline | file::utl_file.file_type | buffer::text | Получение строки из открытого файла |
Функция | is_open | file::utl_file.file_type | ::boolean | Проверка валидности файлового дескриптора |
Функция | new_line | file::utl_file.file_type ;[ lines::int4] | ::boolean | Добавление новой строки в открытый файл |
Функция | put | file::utl_file.file_type ;(buffer::text | buffer::anyelement ) | ::boolean | До бавление записи в файл |
Функция | put_line | file::utl_file.file_type ;(buffer::text | buffer::anyelement ) ;[ autoflush::boolean ] | ::boolean | Добавление новой строки в открытый файл |
Функция | putf | file::utl_file.file_type ;format::text ;[ arg1::text ] ;[[ arg2::text ]] ;[[[ arg3::text ]]] ;[[[[ arg4::text ]]]] ;[[[[[ arg5::text ]]]]] | ::boolean | Форматированный вывод в открытый файл |
Функция | tmpdir | – | ::text | Вывод значения системной переменной $TEMP |
plunit
Пакет добавляет функции проверок.
Тип | Имя | Входные переменные функции | Выходные переменные функции | Описание |
---|---|---|---|---|
Процедура | assert_equals | expected::anyelement ;actual::anyelement ;[ message::varchar] | – | Проверка условия expected = actual |
Процедура | assert_equals | expected::float8 ;actual::float8 ;range::float8 ;[ message::varchar] | – | Проверка условия expected = actual в пределах range |
Процедура | assert_false | condition::bool ;[ message::varchar] | – | Проверка логического условия FALSE |
Процедура | assert_true | condition::bool ;[ message::varchar] | – | Проверка логического условия TRUE |
Процедура | assert_not_equals | expected::anyelement ;actual::anyelement ;[ message::varchar] . | – | Проверка условия expected != actual |
Процедура | assert_not_equals | expected::float8 ;actual::float8 ;range::float8 ;[ message::varchar] | – | Проверка условия expected != actual в пределах range |
Процедура | assert_not_null | actual::anyelement ;[ message::varchar] | – | Проверка входного параметра на присутствие значения NOT NULL |
Процедура | assert_null | actual::anyelement ;[ message::varchar] | – | Проверка входного параметра на отсутствие значения IS NULL |
Процедура | fail | [ message::varchar] | – | Безусловный возврат с ошибкой |