Ich habe os_command.exec
verwendet, um Befehle an die Linux-Shell zu senden. Ich benutze Oracle 12c. HierAufruf von os_command.exec aus einer gespeicherten Oracle-Prozedur
ist ein Beispiel-Code, der gut arbeitet:
select os_command.exec('/home/smucha/app/smucha/product/12.1.0/dbhome_1/bin/sqlldr userid=system/password control=/home/smucha/load_data.cmt')
from dual
Ich mag würde einen ähnlichen Befehl in einer gespeicherten Prozedur auszuführen. Gibt es eine Möglichkeit, dies zu tun?
Ich habe Folgendes versucht, aber es funktioniert nicht. Meine Prozedur wird ohne Fehler ausgeführt, aber keine Datensätze werden geladen.
execute immediate 'select os_command.exec(''/home/smucha/app/smucha/product/12.1.0/dbhome_1/bin/sqlldr userid=system/acorp56k control=/home/smucha/IZ/load_data.cmt'') from dual';
Vermutlich ist os_command eine gespeicherte Java-Prozedur mit PL/SQL-Function-Wrapper? Welchen Datentyp gibt das zurück? Es kann nützlich sein, mindestens die PL/SQL-Spezifikation anzuzeigen. (Es könnte sein [http://www.oracle.com/technetwork/database/enterprise-edition/calling-shell-commands-from-plsql-1-1-129519.pdf), so dass es ein zurückgibt int?) –