Ich benutze Oracle-Datenbank 10g. Ich muss eine Java-Stroed-Prozedur schreiben, über die ich eine Datei auf dem Server aufrufen und lokal auf dem Benutzercomputer speichern kann. Ich benutze Orakel Apex 3.1.1.Wie kann ich eine Datei mit Java gespeicherte Prozedur öffnen
Antwort
Irgendein Grund muss es Java sein? DBMS_FILE in PL/SQL sollte im Allgemeinen gut funktionieren.
Ansonsten denke ich (ich habe Java gespeicherte Prozeduren für eine lange Zeit nicht gemacht) sollten Sie einfach in der Lage sein, einen IO-Stream zu öffnen, wie Sie in Java immer tun würden.
Wenn Sie über eine echte Oracle Java Stored Procedure sprechen, glaube ich nicht, dass Sie dies tun können. Denken Sie daran, dass die Java-Prozedur unter der Oracle-JVM in der Datenbank ausgeführt wird, was bedeutet, dass sie nur das Datenbankhost-Dateisystem "sehen" kann.
Da Sie APEX 3.1 verwenden, gibt es einen Grund, warum Sie einfach einen Link zu der Datei auf dem Server über APEX (daher der Webserver) erstellen können, um die Datei herunterzuladen?
Sie können dies auch über das UTL_FILE-Paket tun, vergessen Sie nicht, das CREATE DIRECTORY auszuführen und READ für das Verzeichnis zuerst zu erteilen.
Ich denke, dass Sie die Datei auch über Java öffnen können, aber nur, wenn Sie zuerst die Berechtigung erteilen, damit der Oracle-Prozess auf die Verzeichnisse auf Ihrem System zugreifen kann. Dies scheint die komplexeste Methode zu sein.
Warum eine Java Stored Procedure? Nur weil Sie denken, dass dies in PL/SQL nicht möglich ist?
Es gibt einige FTP-Implementierungen in PL/SQL. Sourceforge has one. Tim Hall hat eine auf his Oracle-Base site veröffentlicht.
1: http://sourceforge.net/projects/plsqlftp/ „UTL_FTP Projekt
, das wie eine sehr dumme Idee klingt – Paco