Anmelden

View Full Version : *SRVPGM in VB.NET nutzen???



Seiten : 1 [2]

B.Hauser
27-08-08, 19:48
Warum müssen UDFs mit *CALLER gewandelt werden?

Müssen nicht!
SQL UDFs werden standardmäßig mit der Aktivierungsgruppe *CALLER erstellt und kann dies nicht ändern.

Externe UDFs erhalten die Aktivierungsgruppe, die für das Service-Programm, in denen sich die Prozeduren befinden gesetzt wurde. Bei Service-Programmen ist der Unterlassungswert *CALLER, aber es macht durchaus auch Sinn Service-Programme in einer benannten Aktivierungsgruppe laufen zulassen, z.B. wenn in dem Service-Programm viele Prozeduren sind, die von vielen (Service-)Programmen verwendet werden z.B. Datumsrechnung. In diesem Fall wird das Service-Programm nur ein einziges Mal im Job-Speicher aktiviert und kann von allen Programmen verwendet werden. Im anderen Fall (Aktivierungsgruppe *CALLER), würde für jeden Aufruf aus einer anderen Aktivierungsgruppe eine Kopie des Programms aktiviert werden.
Aktivierungsgruppe *NEW ist für Service-Programme nicht erlaubt!

Service-Programme, in denen allerdings Insert, Updates oder Deletes (oder die entsprechenden native I/O Befehle) verwendet werden, sollten mit Aktivierungsgruppe *CALLER erstellt werden, um eine hohe Transaktionssicherheit zu garantieren. Der Unterlassungswert für Commitment Scope im Befehl STRCMTCTL ist Aktivierungsgruppe, d.h. ein Commit oder Rollback erfolgt nur innerhalb der gleichen Aktivierungsgruppe. (... und was viele nicht wissen, wird mit SQL und Commitment Control gearbeitet, startet SQL die Commitment Control selber, sofern sie nicht gestartet ist und zwar mit Default-Werten!).

In UDFs sollten die Anzahl der Dateizugriffe auf ein Minimum reduziert werden, und keine Inserts, Updates oder Deletes erfolgen. (Dazu sind Stored Procedures da!). Der Grund dafür liegt darin, dass UDFs normalerweise aus einem Select-Statement aufgerufen werden.
Enthält eine Funktion keine Dateizugriffe, oder nur wenige Lesezugriffe, erübrigt sich das Thema Commit oder Rollback in der UDF verwenden zu wollen.

Birgitta

dabeda
27-08-08, 20:13
Tja, wie immer gibt es noch viel zu lernen ...:rolleyes:

Mit Stored Procedures kann ich leider noch nichts anfangen, da muß ich mir erst noch ein bisschen Literatur gönnen.

Vielen Dank für die Infos!

Mfg Peter