19июн
Стандартные пакеты. DBMS_JAVA
Пакет для поддержки JAVA на сервере ORACLE. Рассмотрим основные процедуры и функции пакета.
LOGNAME, SHORTNAME – функции для преобразования коротких идентификаторов в длинные имена JAVA и наоборот. В словаре данных нашей базы обычно находятся хешированные имена Java-классов, которые загружены в базу данных, так как ORACLE не поддерживает длинные имена (только до 30 символов). Посмотрите поле object_name представление all_objects для java-классов. Вот для того, чтобы по короткому имени получить реальное имя и наоборот и служат эти две функции.
SET_COMPILER_OPTION – процедура для установки компилятора JAVA. Можно установить следующие опции компилятора : online ( true,false) – когда выполнять проверку типов (при выполнении или компиляции); debug ( true,false) - компилировать ли код с включенной отладкой или выключенной; encoding – кодировка исходного файла для компилятора (по умолчанию latin1). Её параметры: what VARCHAR2, optionName VARCHAR2, value VARCHAR2.what шаблон названия пакета, для компиляции которого устанавливаем опции, optionName – название опции (online,debug,encoding),
value - непосредственное значение опции.
Вместе с процедурой set_compiler_option, обычно используют ещё и две следующие процедурки:
get_compiler_option(what VARCHAR2, optionName VARCHAR2) – возвращает значение заданной опции
reset_compiler_option(what VARCHAR2, optionName VARCHAR2) – удаляет указанную опцию для шаблона what из таблицы java$options
SET_OUTPUT – процедура является аналогом команды set serveroutput on в sqlplus. Процедура включает вывод результатов функций System.out.println и System.err.print на екран в sqlplus. Если вы не выполнили вызов exec dbms_java.set_output(100000) то все сообщения, которые формирует System.out.println выводятся в файлы трассировки.
LOADJAVA, DROPJAVA – это процедуры ,которые выполняют тоже, что и утилиты командной строки, загружают-выгружают java-объкты в текущую схему. Преимущество – не надо указывать имя юзера и пароль, тип jdbc – драйвера.
procedure loadjava(options varchar2)
procedure loadjava(options varchar2, resolver varchar2)
procedure loadjava(options varchar2, resolver varchar2, status OUT number)
procedure dropjava(options varchar2)
Блок процедур, управляющих правами
GRANT_PERMISSION – процедура для установки привилегий юзеру. Самый простой метод, который используется для определения нужный прав – выполнить необходимый код и посмотреть на сообщение об ошибках. Пример вызова
exec dbms_java.grant_permission('scott','java.io.FilePermission','/tmp/proba*','read,write,delete');
REVORE _PERMISSION – процедура забирает права, которые были предоставлены GRANT_PERMISSION.