Ich habe sowohl open als auch execsql probiert. Das Verhalten ist in beiden Fällen exakt gleich:
SQLQ.SQL.add('insert into Interpret (id,name) values (''0'',''Testwert'') returning id;');
liefert beim Aufruf von Open oder ExecSQL keine Fehlermeldung, aber es gibt keinen Parameter id, dh der Zugriff auf SQLQ.Params.Parambyname('id') produziert eine
Exception (was zu erwarten war, weil den Parameter id gibt es ja wirklich nicht).
SQLQ.SQL.add('insert into Interpret (id,name) values (:id,:name) returning id;');
erlaubt mir zwar, die Werte für
SQLQ.Params.Parambyname('id').value := 0;
SQLQ.Params.Parambyname('name').value := 'testwert';
zu setzen, dafür produziert der Aufruf von Open ebenso wie der Aufruf von ExecSQL eine
Exception, nämlich
Die Feldnamen für %s konnten nicht erkannt werden
Dabei ist es egal, ob ich versuche, mit der Klausel "returning id" einen Rückgabewert zu bekommen oder ob ich diese Klausel weglasse. In dem Fall komme ich also gar nicht dazu, den Rückgabewert von
SQLQ.Params.Parambyname('id') anzuschauen.