是否可以使用纯 PL/SQL 确定 Oracle 的安装位置?
用例:为了调用外部 C 库,我需要知道它的确切路径(用于create library
调用)。我的 DLL 将驻留在 Oracle 的 BIN 目录中,但我无法在我的脚本中硬编码 DB 安装的路径...
是否可以使用纯 PL/SQL 确定 Oracle 的安装位置?
用例:为了调用外部 C 库,我需要知道它的确切路径(用于create library
调用)。我的 DLL 将驻留在 Oracle 的 BIN 目录中,但我无法在我的脚本中硬编码 DB 安装的路径...
DECLARE
RetVal VARCHAR2(100);
BEGIN
dbms_system.get_env('ORACLE_HOME', RetVal);
dbms_output.put_line(RetVal);
END;
注意:默认情况下,您可能无权访问此软件包。
在 Windows 和 Oracle 10g 上,这有效:
SELECT
substr(file_spec,1,instr(file_spec,'\',1,3))
FROM dba_libraries
WHERE library_name='DBMS_SUMADV_LIB'
从 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