2011-10-17 6 views
5

यह बिल्कुल स्पष्ट होना चाहिए, लेकिन खोज शब्द इतना आम है कि मैं एक जवाब नहीं लग रहा है कर रहे हैं:मैं पीएल/एसक्यूएल में ओएस वैरिएबल कैसे लोड करूं?

प्र मैं एक Oracle 11g पर PL/SQL में एक ऑपरेटिंग सिस्टम चर (RHEL) से मूल्यों को लोड करना डेटाबेस?

कोड:

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

प्रक्रिया ठीक काम करता है अगर मैं एक ईमेल पते में डाल लेकिन वहाँ एक प्रणाली चर $ MAIL_LIST कहा जाता है कि लोगों का एक समूह होता है। मैं यह भी पुष्टि कर सकता हूं कि यह अन्य सर्वरों पर काम कर रहा है लेकिन मैं एक प्रतिस्थापन स्थापित कर रहा हूं।

अग्रिम धन्यवाद और क्षमा करें यदि प्रश्न अत्यधिक सरल है!

+0

$ MAIL_LIST चर ऑपरेटिंग सिस्टम उपयोगकर्ता को कमांड लाइन में उपलब्ध है जिसने ओरेकल डेटाबेस शुरू किया। – user739866

+0

आपकी प्रक्रिया क्या कर रही है। पैकेज नाम के आधार पर, मुझे लगता है कि आपके पास घोषित बाहरी प्रक्रिया की कुछ प्रकार है। इसका तात्पर्य है कि पीएल/एसक्यूएल सी (या कुछ जो सी इंटरफेस का खुलासा करता है) में लिखी गई बाहरी प्रक्रिया को बुला रहा है और इसका तात्पर्य है कि पीएल/एसक्यूएल में नहीं, बाहरी प्रक्रिया में पर्यावरण चर का संकल्प किया जा रहा है। यदि ऐसा है, तो हमें यह पता लगाना होगा कि बाहरी प्रक्रिया को कैसे परिभाषित किया गया है और कार्यान्वित किया गया है। आपके पर्यावरण में यह पर्यावरण परिवर्तनीय जनसंख्या कहाँ है? –

+0

पीएल/एसक्यूएल एक शेल कमांड को कॉल कर रहा है जैसा कि नीचे दिखाया गया है: खोल ('गूंज "विषय:' || REPLACE (p_subject, '' ',' \" ') || सीएचआर (10) || l_body || '' | sendmail '|| p_recipient); मुझे यह देखने के लिए नीचे दिए गए उत्तर का प्रयास करने की आवश्यकता है कि यह काम करता है या नहीं। – user739866

उत्तर

7

आप जावा के System class में getenv method के माध्यम से पर्यावरण चर का उपयोग कर सकते हैं। PL/SQL से इस आह्वान के लिए, आप एक जावा संग्रहीत प्रक्रिया इस प्रकार बना सकते हैं:

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 ; 

संग्रहीत प्रक्रिया भी कर सकते हैं एक पीएल/एसक्यूएल पैकेज के अंदर मौजूद है (यदि आप केवल पर्यावरण चर प्राप्त करने के लिए स्कीमा-स्तरीय फ़ंक्शन नहीं बनाना चाहते हैं)।

संबंधित मुद्दे