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

时间:2011-10-17 21:52:13

标签: oracle plsql oracle11g

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

Q值。如何将操作系统变量(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 ;            

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

如果问题过于简单,请提前致谢并抱歉!

1 个答案:

答案 0 :(得分:7)

您可以通过Java getenv method中的System class访问环境变量。要从PL / SQL调用它,您可以按如下方式创建Java存储过程:

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

现在,您可以按如下方式编写PL / SQL代码:

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

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