Pregunta ¿Cómo puedo cargar las variables del sistema operativo en PL / SQL?


Esto debería ser bastante sencillo, pero las palabras de búsqueda son tan comunes que no encuentro una respuesta:

P. ¿Cómo puedo cargar los valores de una variable del sistema operativo (RHEL) en PL / SQL en una base de datos Oracle 11g?

Código:

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

El procedimiento funciona bien si pongo una dirección de correo electrónico pero hay una variable del sistema llamada $ MAIL_LIST que contiene un grupo de personas. También puedo confirmar que esto está funcionando en otros servidores, pero estoy configurando un reemplazo.

Gracias de antemano y disculpa si la pregunta es demasiado simple!


5
2017-10-17 21:52


origen


Respuestas:


Puede acceder a las variables de entorno a través de la getenv método en Java System clase. Para invocar esto desde PL / SQL, puede crear un procedimiento almacenado Java de la siguiente manera:

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

Ahora, puede escribir su código PL / SQL de la siguiente manera:

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

El procedimiento almacenado también puede existir dentro de un paquete PL / SQL (si no desea crear una función de nivel de esquema solo para adquirir variables de entorno).


7
2017-10-17 22:03