# Stored Procedure in Oracle, Txt erzeugen



## Generic1 (10. Sep 2010)

Hallo,

weiß jemand ob es möglich ist, von einer Stored Procedure in Oracle heraus ein File (*.txt) zu erzeugen, NACHDEM in der (in einer bestimmten) Tabelle ein Eintrag gemacht wurde. 
Oder gibt es einen anderen Vorschlag, wie ich das am Besten machen könnte,

Also nochmal zur Erklärung: wenn ein Eintrag in die Tabelle gemacht wird (ein Tupel eingetragen wird), dann sollte zuerst aus einer anderen Tabelle etwas abgefragt werden und gemeinsam mit einem Spalten- Eintrag der aktuellen Tabelle in ein File geschrieben werden.

Vielen Dank,
lg


----------



## diel2001 (10. Sep 2010)

Am besten einen Triger dafür verwenden, da gibt es die Möglichkeit bei einem Delete ,Update oder Insert 
etwas zu machen z.B ein Logeintrag in eine Tabelle schreiben
Am besten mal bei Google nach Beispielen suchen


----------



## Generic1 (11. Sep 2010)

OK, Trigger ist klar, da kann man angeben wann dieser ausgeführt werden soll.
Was mir noch nicht klar ist und ich bis jetzt auch noch nicht recherchieren konnte, ob man aus einem Trigger heraus eine Datei auf dem Rechner erzeugen kann bzw. in eine Datei am Rechner schreiben kann?
lg


----------



## Gast2 (11. Sep 2010)

In dem Triggercode kannst du ja PL/SQL benutzen. Also musst du entweder direkt das Fileschreiben in dem Trigger implementieren oder aber was ich vorziehen würde einfach eine Stored Procedure aufrufen.

In beiden Fällen wirst du UTL_FILE und ein Oracle Directory nutzen wollen.


----------



## Generic1 (12. Sep 2010)

Besten Dank mal für deine Info,
Ich würde gerne eine Stored Procedure aufrufen aber ich hab leider keinen Zugriff zum Quellcode der Applikation, daher muss ich das Ganze in Oracle machen,

Eine Stored Procedure kann man so weit ich weiß, nur aufrufen, diese wird aber nicht ausgeführt, denn in einer Tabelle irgendwas passtiert -> das wäre dann der Trigger mit PL/SQL.

Da werd ich dann nicht vorbeikommen, dass ich mir PL/SQL ansehen.

Kann man PL/SQL in einem vernünftigen Zeitrahmen lernen?
lg


----------



## Gast2 (12. Sep 2010)

PL/SQL ist solange man nur "einfache" Dinge macht sehr sehr leicht zu lernen. Prinzipiell ist das schon fast PseudoCode. In den meisten Fällen wird da eh nur prozedural programmiert (obwohl OOP auch geht - kann/kennt aber kaum einer).

Wenn du die Stored Procedure schon hast? Dann ist die doch auch in PL/SQL programmiert oder hab ich das falsch verstanden? Ansonsten wenn es die schon gibt einfach aus dem Trigger heraus aufrufen.


----------



## Generic1 (12. Sep 2010)

Nein, ich hab noch gar nichts (weder Trigger noch Stored Procedure) und bin eben gerade dabei, zu evaluieren, wie ichs machen kann.
OK, also Zusammengefasst kann man sagen, man kanns mit PL/SQL machen,
Ich werd versuchen, es mal zu implementieren.
lg


----------



## Gast2 (12. Sep 2010)

Generic1 hat gesagt.:


> man kanns mit PL/SQL machen,



Um genau zu sein MUSS man es mit PL/SQL (oder Java in der DB, aber da braucht man auch einen PL/SQL Wrapper) machen. Der Trigger selber wird ja auch in PL/SQL geschrieben


----------



## Generic1 (12. Sep 2010)

Und das geht, dass nach jedem INSERT in einer Tabelle der PL/SQL- code ausgeführt wird?
Oder brauch ich da einen Trigger, der den PL/SQL- Code anstößt nach einem INSERT in eine Tabelle?
lg


----------



## Gast2 (12. Sep 2010)

Also:

Du brauchst in JEDEM Fall einen Trigger auf der Tabelle der den INSERT Event abfängt. Diesen Trigger schreibst du in PL/SQL. Dann kannst du dir aussuchen ob du aus dem Trigger entweder eine Stored Procedure aufrust (ebenfalls in PL/SQL geschrieben, oder aber halt eine Java Stored Procedure) oder aber direkt deine Business-Logik in dem Triggercode implementierst.

Sauberer wäre es meiner Meinung nach aus dem Trigger eine Stored Procedure aufzurufen als alles in dem Triggercode zu machen.


----------

