如何将OS变量加载到PL/SQL中?

use*_*866 5 oracle plsql oracle11g

这应该非常简单,但搜索词很常见,我找不到答案:

问:如何将操作系统变量(RHEL)中的值加载到Oracle 11g数据库的PL/SQL中?

码:

begin
dba_utilities.utilities_with_ext_proc.send_email(
        p_recipient   => '$MAIL_LIST',
        p_subject     => 'Subject'
        p_body        => 'Body
);
End ;            
Run Code Online (Sandbox Code Playgroud)

如果我输入电子邮件地址但是有一个名为$ MAIL_LIST的系统变量包含一组人,则该过程正常.我也可以确认这是在其他服务器上工作,但我正在设置替代品.

如果问题过于简单,请提前致谢并对不起!

Ada*_*ter 7

您可以通过Java 类中getenv方法访问环境变量.要从PL/SQL调用它,您可以创建Java存储过程,如下所示:System

CREATE FUNCTION getenv(name VARCHAR2) RETURN VARCHAR2
  AS LANGUAGE JAVA 
  NAME 'java.lang.System.getenv(java.lang.String) return java.lang.String';
Run Code Online (Sandbox Code Playgroud)

现在,您可以编写PL/SQL代码,如下所示:

begin
dba_utilities.utilities_with_ext_proc.send_email(
        p_recipient   => getenv('MAIL_LIST'),
        p_subject     => 'Subject'
        p_body        => 'Body
);
End ; 
Run Code Online (Sandbox Code Playgroud)

存储过程也可以存在于PL/SQL包中(如果您不想创建模式级函数来获取环境变量).