2011-10-17 17 views
5

Bu oldukça basit olmalı ancak arama kelimeleri o kadar yaygındır ki ben bir yanıt bulamıyorum:OS Değişkenlerini PL/SQL'e nasıl yüklerim?

S. Bir işletim sistemi değişkeninden (RHEL) değerleri bir Oracle 11g'deki PL/SQL'e nasıl yüklerim veritabanı?

Kodu: Ben bir e-posta adresi koymak ama bir grup insan içeren $ MAIL_LIST denilen bir sistem değişkeni varsa

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

prosedür çalışıyor. Bunun diğer sunucularda çalıştığını da doğrulayabilirim ancak bir yedek oluşturuyorum.

Şimdiden teşekkürler ve soru aşırı basitse özür dilerim!

+0

$ MAIL_LIST değişkeni, Oracle Veritabanını başlatan işletim sistemi kullanıcısına komut satırında kullanılabilir. – user739866

+0

Prosedürünüz ne yapıyor? Paket adına göre, bir çeşit dış prosedürün bildirildiğini tahmin ediyorum. Bu, PL/SQL'in C (veya C arayüzünü açığa çıkaran bir şey) ile yazılmış harici bir prosedürü çağırdığını ve çevre değişkeninin çözünürlüğünün PL/SQL'de değil, bu harici prosedürde yapıldığını ima eder. Bu durumda, dış prosedürün nasıl tanımlandığını ve uygulanacağını bulmamız gerekir. Ortamınızda bu ortam değişkeni nerede bulunur? –

+0

PL/SQL aşağıda gösterildiği gibi bir kabuk komutunu çağırıyor: kabuk ('echo "Konu:' || REPLACE (p_subject, '"', '\ "') || CHR (10) || l_body || '"| sendmail' || p_recipient); Çalışıp çalışmadığını görmek için aşağıdaki cevabı denemeliyim. – user739866

cevap

7

Ortam değişkenlerine Java'nın System class numaralı telefonunda getenv method aracılığıyla erişebilirsiniz.

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

saklı yordam ayrıca:

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

Şimdi şöyle size PL/SQL kodu yazabilirsiniz, şu şekildedir: PL/SQL den bu çağırmak için, bir Java saklı yordam oluşturabilir PL/SQL paketinin içinde (ortam değişkenlerini elde etmek için şema düzeyinde bir işlev oluşturmak istemiyorsanız) var.