2

是否可以使用纯 PL/SQL 确定 Oracle 的安装位置?

用例:为了调用外部 C 库,我需要知道它的确切路径(用于create library调用)。我的 DLL 将驻留在 Oracle 的 BIN 目录中,但我无法在我的脚本中硬编码 DB 安装的路径...

4

3 回答 3

3
DECLARE
 RetVal VARCHAR2(100);
BEGIN
  dbms_system.get_env('ORACLE_HOME', RetVal);
  dbms_output.put_line(RetVal);
END;

注意:默认情况下,您可能无权访问此软件包。

于 2009-06-19T13:48:24.157 回答
2

在 Windows 和 Oracle 10g 上,这有效:

SELECT  
substr(file_spec,1,instr(file_spec,'\',1,3)) 
FROM dba_libraries 
WHERE library_name='DBMS_SUMADV_LIB'
于 2009-06-19T13:45:39.293 回答
2

从 Oracle 12c 开始,您可以使用该SYS_CONTEXT功能:Oracle docs

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

/u01/app/oracle/product/12.1.0.2/dbhome_1
于 2018-04-13T04:29:02.043 回答