PDA

View Full Version : Transaktion in einer SQL UDF durchführen



Seiten : 1 2 3 [4]

dschroeder
02-07-24, 16:28
Danke, dass ich euch alle so viele Mühe macht und so viele Antworten gebt. Aber ich bin immer noch der Meinung, dass eine Funktion, die Daten schreibt, eine klare und einfache Lösung darstellt.

Ich bin auch überhaupt kein Freund des IWS. Aber das Ding ist erstmal eine Lösung für uns und wird von IBM gewartet und supported.
Ich möchte gar keine komplizierten SQL-Anweisungen im IWS haben. Deshalb verfahren wir im Moment so, dass wir im IWS bei SQL-based Services immer nur eine UDF aufrufen, die möglichst flexible Parameter bekommt. Z.B. als Input ein Json und als Output ein Json. Wenn ein IWS Service soweit eingerichtet ist, dass er die Funktion aufrufen kann, müssen wir uns um die unschöne Bedienung des IWS nicht mehr kümmern. Wir können dann jederzeit die Input Werte erweitern (ist ja JSON) und können den Output anpassen (Ist ja auch nur Json).

Fuerchau
02-07-24, 17:34
Trotzdem ist die UDFunction der falsche Ansatz.
Du kannst ebenso eine UDProcedure verwenden, die hat Eingabe-, Ausgabe- sowie Ein-/Ausgabe-Parameter. Du darfst da halt mehr mit machen.
UDF's sind meist eben auch in Select und Where-Klauseln verwendet und da ist die Aufrufhäufigkeit ein Vielfaches.
Wenn IWS keine Procedure mit Ein-/Ausgabe unterstützt, bleibt halt nur deine Function.
Allerdings, wenn auch etwas aufwändiger, kann eine Function eine Procedure auch wieder aufrufen.
Wenn dies dann eine externe Prozedur in eigener ACTGRP ist, sollten deine Wünsche klappen.

dschroeder
02-07-24, 19:35
Wenn IWS keine Procedure mit Ein-/Ausgabe unterstützt, bleibt halt nur deine Function.
Allerdings, wenn auch etwas aufwändiger, kann eine Function eine Procedure auch wieder aufrufen.
Wenn dies dann eine externe Prozedur in eigener ACTGRP ist, sollten deine Wünsche klappen.

Wenn ich den Code in eine Procedure schreibe und dann eine Function als Adapter drumlege, habe ich ja doch wieder die Funktion, die letztlich schreibt (auch wenn sie das nicht selber macht, sondern dafür eine Procedure nutzt). Da sehe ich den Vorteil nicht.

Tut mir leid, vielleicht setzt bei mir langsam der Alterstarrsinn ein. :-)

Aber eigentlich ging es ja mal um Transaktionen. Und da haben mir eure Erklärungen durchaus weiter geholfen.

Dafür nochmals Danke!