#java #database #oracle #plsql
#java #База данных #Oracle #plsql
Вопрос:
Чтобы предоставить java-код, который выполняется внутри Oracle JVM, встроенной в СУБД 10g, в определенный каталог на диске, я могу выполнить:
dbms_java.grant_permission(
'SCOTT',
'SYS:java.io.FilePermission',
'/some/path/on/disk',
'read');
Каков эквивалентный синтаксис для предоставления Java-коду, работающему внутри Oracle JVM, встроенной в СУБД 10g, каталога Oracle по имени?
dbms_java.grant_permission( 'SCOTT',
'SYS:java.io.FilePermission',
'SOME_DIRECTORY_IN_ALL_DIRECTORIES_VIEW',
'read');
Объекты каталога можно найти здесь:
выберите * из all_directories
Примеры записей в представлении all_directories:
OWNER DIRECTORY_NAME DIRECTORY_PATH
SYS LOG /export/home/scott/log
SYS RESPONSE /export/home/scott/response
SYS STAGING /export/home/scott/staging
Если есть такой зверь, каков синтаксис для чтения из именованного каталога в коде Java?
Ответ №1:
Основываясь на том, что я прочитал в этом вопросе AskTom, вам понадобится что-то вроде:
SELECT directory_path INTO v_path
FROM all_directories
WHERE directory_name = '<oracle_dir_name>';
dbms_java.grant_permission( 'SCOTT',
'SYS:java.io.FilePermission',
v_path,
'read');
Комментарии:
1. Понятно. Я сделал это, и это, казалось, противоречило всей идее объектов каталога.