hallo allerseits,

heute hatte ich folgendes Problem und frage mich, warum das so nicht klappt...

aufgabe: es soll im rpg mit einem SQL-Statement geprüft werden, ob ein wert in einer liste von werten vorkommt.

die Idee war, das SQL so zu schreiben:

dcl-s found ind inz;
exec SQL select '1' into :found from Datei where dateifeld in('ABC', 'DEF', 'YXZ');
das würde ja noch funktionieren, jetzt aber die variante, die leider nicht klappt:


dcl-s found ind inz;
dcl-s vergleich char(50);
vergleich = ' (''ABC'', ''DEF'', ''YXZ'') ';

exec SQL select '1' into :found from Datei where dateifeld in :vergleich ;

da findet das SQL nix, sqlcode = 100

kann mir jemand sagen, ob man so eine where-Bedingung mit in und hostvariable überhaupt machen "darf"?

ich habe das jetzt mit dyna-SQL gelöst, klappt 1a, aber mich würde interessieren, was an der variante oben falsch gemacht ist.

danke :-)