karin
27-02-18, 14:13
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 :-)
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 :-)