Как определить ORACLE_HOME из PL / SQL? - PullRequest
1 голос
/ 19 июня 2009

Можно ли определить, где установлен Oracle, используя чистый PL / SQL?

Вариант использования: Чтобы вызвать внешнюю библиотеку C, мне нужно знать ее точный путь (для вызова create library). Моя DLL будет находиться в каталоге Oracle BIN, но я не могу жестко прописать путь установки БД в моих скриптах ...

Ответы [ 3 ]

3 голосов
/ 19 июня 2009
DECLARE
 RetVal VARCHAR2(100);
BEGIN
  dbms_system.get_env('ORACLE_HOME', RetVal);
  dbms_output.put_line(RetVal);
END;

ПРИМЕЧАНИЕ. Скорее всего, у вас не будет разрешения на этот пакет по умолчанию.

1 голос
/ 13 апреля 2018

Начиная с Oracle 12c, вы можете использовать функцию SYS_CONTEXT: Документы Oracle

SET SERVEROUTPUT ON
BEGIN
   DBMS_OUTPUT.PUT_LINE(SYS_CONTEXT('USERENV','ORACLE_HOME'));
END;
/

/u01/app/oracle/product/12.1.0.2/dbhome_1
1 голос
/ 19 июня 2009

В Windows и Oracle 10g это работает:

SELECT  
substr(file_spec,1,instr(file_spec,'\',1,3)) 
FROM dba_libraries 
WHERE library_name='DBMS_SUMADV_LIB'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...