Zitat Zitat von JotSo Beitrag anzeigen
danke für Euren zahlreichen Tips.

"im übrigen ist es keine besonders gute Idee Updates in UDFs auszuführen.
"
-> Tatsächlich mache ich keinen Update in der UDF, sondern einen create table sowie einen insert in eine Log-Datei. Ich erstelle also mit meiner Select Anweisung 792 Tabellen und protokolliere die Create Table-Anweisung in einer Log-File.

"warum führst Du ein Skript aus
?" -> weil ich im ACS-SQL-Skript-Editor schön den Fortschritt beim Abarbeiten der einzelnen Schritte sehe. Oder bei Bedarf kann ich zum Testen auch nur einen oder 3 oder 5 Schritte ausführen. Tolle Funktionalität im ACS :-)

"Ein select count(*) hilft nicht?"
-> leider nein, da ich Felder der Tabelle, auf die der Select geht, an die Funktion weiterreiche

"Schreib' dir eine Stored Procedure oder führe eine dynamsiche Prozedur (BEGIN ... END - und dazwischen SQL-Befehle), in der ein Cursor definiert wird, über den das SQL-Statement komplett verarbeitet wird. Damit sollten dann Deine Funktionen alle ausgeführt werden."
-> den Cursor lese ich dann per Fetch?
... eigentlich brauchst Du da keinen Fetch. Sieh Dir mal das Beispiel in der SQL Reference an:
BEGIN
DECLARE fullname CHAR(40);
FOR vl AS
c1 CURSOR FOR
SELECT firstnme, midinit, lastname FROM employee
DO
SET fullname =
lastname || ', ' || firstnme ||' ' || midinit;
INSERT INTO TNAMES VALUES ( fullname );
END FOR;
END;

Aufpassen must Du mit dem error Handling, das ist etwas hakelig. Ohne Continue Handler düst du da unversehens aus der Stored procedure raus.

D*B