To powinno być dość proste, ale wyszukiwane słowa są tak częste, że nie znajduję odpowiedzi:Jak załadować zmienne OS do PL/SQL?
P. Jak wczytać wartości ze zmiennej systemu operacyjnego (RHEL) do PL/SQL na Oracle 11g Baza danych?
Kod:
begin
dba_utilities.utilities_with_ext_proc.send_email(
p_recipient => '$MAIL_LIST',
p_subject => 'Subject'
p_body => 'Body
);
End ;
Procedura działa dobrze, jeśli mogę umieścić w adresie e-mail, ale nie jest zmienną systemową o nazwie $ MAIL_LIST który zawiera grupę ludzi. Mogę również potwierdzić, że działa to na innych serwerach, ale instaluję zamiennik.
Z góry dziękuję i przepraszam, jeśli pytanie jest zbyt proste!
Zmienna $ MAIL_LIST jest dostępna w wierszu poleceń dla użytkownika systemu operacyjnego, który uruchomił bazę danych Oracle. – user739866
Co robi twoja procedura. Na podstawie nazwy pakietu, zgaduję, że masz zadeklarowaną procedurę zewnętrzną. Oznacza to, że PL/SQL wywołuje zewnętrzną procedurę napisaną w C (lub coś, co eksponuje interfejs C) i sugeruje, że rozdzielczość zmiennej środowiskowej jest wykonywana w tej zewnętrznej procedurze, a nie w PL/SQL. W takim przypadku musielibyśmy ustalić, w jaki sposób definiuje się i wdraża procedurę zewnętrzną. Gdzie w twoim otoczeniu jest ta zmienna środowiskowa? –
PL/SQL wywołuje polecenie powłoki, jak pokazano poniżej: shell ('echo "Subject:' || REPLACE (p_subject, '"', '\ "') || CHR (10) || l_body || "" | sendmail '|| p_recipient); Muszę wypróbować odpowiedź poniżej, aby sprawdzić, czy działa, czy nie. – user739866