Leider nein, hat mit meinem Problem nichts zu tun.
Ich bekomme einfach das Ergebnis des
SQL Statements, das mit der returning Klausel an das Programm zurückgegeben werden sollte, nicht zu fassen. Bei der Rückkehr von der
Query ist
Query.params ganz leer.
Aber es muss irgend etwas grundlegend falsch sein, weil in der Tabelle auch kein Datensatz abgelegt wird. Die Übergabe des Befehlsstrings an
SQL funktioniert aber offenbar, weil wenn ich den String irgendwie auf ein ungültiges
SQL-Statement ändere (ungültiger Tabellenname oder fehlender Strichpunkt am Ende), löst der Aufruf von Open eine
Exception aus. Nur wenn S einen syntaktisch richtigen
SQL Befehl enthält, kehrt OPEN ohne Fehlermeldung zurück, ausgeführt wird das Insert aber trotzdem nicht - nicht einmal, wenn ich die returning Klausel weglasse.
Edit: Dass keine Daten in der Tabelle ankommen, stimmt nicht. Es scheint nötig zu sein, im ISQL nach einem Select ein commit einzugeben, bevor man mit einem neuerlichen Select die neuen Daten zu Gesicht bekommt. Offenbar wird mit einem select implizit eine Transaktion gestartet, die dann die Sicht auf die Daten konsistent hält. Fazit: Das Insert wird ausgeführt, aber ich komme einfach nicht zum Rückgabewert.