Token unknown lässt auf einen Syntaxfehler im
SQL schließen, vermutlich ist das aber nur eine Teilmenge der Fehlermeldung.
Bitte mal das vollständige
SQL und die vollständige Fehlermeldung. So ist das nur was für die
Ein Parameter = ein Wert.
Wenn ein Wert aus mehreren Zeichenfolgen besteht, geht das.
Wenn ein Parameter aber mehrere einzelne Werte enthält, die eigentlich separat ins IN sollen, dann geht das nicht.
Delphi-Quellcode:
qry.SQL.Text := 'select * from x where feld2 IN (:Parameter)';
qry.Params[0].AsString := 'Das ist jetzt mal etwas Text.';
funktioniert.
Das wird zu
select * from x where feld2 IN ('Das ist jetzt mal etwas Text.')
, wobei hier das IN auch durch ein = ersetzt werden könnte.
Delphi-Quellcode:
qry.SQL.Text := 'select * from x where feld2 IN (:P1,:P2,:P3,:P4,:P5,:P6)';
qry.Params[0].AsString := 'Das'
qry.Params[1].AsString := 'ist'
qry.Params[2].AsString := 'jetzt'
qry.Params[3].AsString := 'mal'
qry.Params[4].AsString := 'etwas'
qry.Params[5].AsString := 'Text.'
funktioniert, kann aber zu einem deutlich anderen Ergebnis, als die vorherige Variante, führen.
Delphi-Quellcode:
qry.SQL.Text := 'select * from x where feld2 IN (:Parameter)';
qry.Params[0].AsString := '''Das'',''ist'',''jetzt'',''mal'',''etwas'',''Text.''';
funktioniert eventuell technisch. Im IN steht aber nur ein Wert, nach dem gesucht werden soll, und nicht sechs Werte, wie der Aufbau des Parameters suggerieren könnte. Und wenn hier die Anzahl der ' nicht so ganz passt, könnte die daraus resultierende Fehlermeldung auch 'Token unknown' enthalten.