Hallo, das Problem ist gelöst.
Die Firebird
API kennt zwei verschiedene Execute Methoden, execute und execute2, und execute2 war die falsche
.
Execute ist für Queries, die beliebig viele (zwischen 0 und n) Ergebniszeilen liefern, und hat keinen Result Parameter, weil die Ergebniszeilen danach mittels fetch der Reihe nach geholt werden müssen.
Execute2 ist für Queries, die genau eine Zeile als Ergebnis zurückliefern, und dieser Wert wird in der Result Variablen übergeben. Wenn es kein Ergebnis gibt, löst execute2 eine
Exception aus.
Das Ganze ist, wie so vieles andere, nirgends richtig dokumentiert oder zumindest nicht so leicht zufinden, aber im progdigy Forum habe ich die Erklärungen bekommen. Der Hintergrund dazu ist im Firebird
API Guide nachzulesen, wenn man dort gründlich danach sucht.