Hallo!
ich verwende folgende Procedure, um ein Befehl auf OS Ebene abzusetzen:
Der Code oben ist mehr oder weniger eine Kopie, wie sie an dutzenden Stellen im Internet zu finden ist.
Der Befehl (cmd) selbst ist ungefähr ein linux tail *.csv > RESULTFILE. Er funktioniert in der console normal.
In dieser Variante erhalte ich als Status Rückgabe immer eine 0, es geschieht aber nichts.
Eine komplexere Variante der Prozedur oben aus der Oracle Hilfe läuft beim send_message ebenfalls durch, liefert aber bei receive_message status 1 zurück, pipe_error.
Es ist kein Rechte Problem auf das Package. Grant und Revoke auf das Package ergeben jeweils das zugehörige Verhalten.
Habe ich da irgendwas übersehen? Bis jetzt ist mir anhand der Doku auch gar nicht klar, in welchem Consolen Kontext der Befehl dann läuft.
ich verwende folgende Procedure, um ein Befehl auf OS Ebene abzusetzen:
Code:
CREATE OR REPLACE FUNCTION host_command( cmd IN VARCHAR2 ) RETURN INTEGER IS STATUS NUMBER; errormsg VARCHAR2(80); pipe_name VARCHAR2(30); BEGIN pipe_name := 'HOST_PIPE'; dbms_pipe.pack_message( cmd ); STATUS := dbms_pipe.send_message(pipe_name); RETURN STATUS; EXCEPTION WHEN OTHERS THEN -- SWTR_LOGGER.logError(pIDs => 1, pLogFile => 'hostcmd.log', pDomain => 'ARFUL', pPackage => 'none', pFunction => 'host_command',pComment => cmd); RAISE; END;
Der Befehl (cmd) selbst ist ungefähr ein linux tail *.csv > RESULTFILE. Er funktioniert in der console normal.
In dieser Variante erhalte ich als Status Rückgabe immer eine 0, es geschieht aber nichts.
Eine komplexere Variante der Prozedur oben aus der Oracle Hilfe läuft beim send_message ebenfalls durch, liefert aber bei receive_message status 1 zurück, pipe_error.
Es ist kein Rechte Problem auf das Package. Grant und Revoke auf das Package ergeben jeweils das zugehörige Verhalten.
Habe ich da irgendwas übersehen? Bis jetzt ist mir anhand der Doku auch gar nicht klar, in welchem Consolen Kontext der Befehl dann läuft.
Comment