这应该非常简单,但搜索词很常见,我找不到答案:
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的系统变量包含一组人,则该过程正常。我还可以确认这是在其他服务器上运行,但我正在设置替代品。
如果问题过于简单,请提前致谢并抱歉!
答案 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包中(如果您不想仅仅为了获取环境变量而创建模式级函数)。