-
rpg sql, where mit "in" und hostvariable
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 :-)
-
Das geht so nicht.
Du musst für jedes Element eine eigene Host-Variable definieren.
Die andere Alternative wäre dynamisches SQL zu verwenden
Birgitta
-
hallo Birgitta,
habe es befürchtet, aber gut zu wissen! mit dyna-SQL funktioniert es ja prima..
danke für deinen hinweis!
lg Karin
-
Wenn man die Strings entsprechend zusammenschustert kann man das auch per POSSTR() in einem Rutsch erledigen:
Posstr("!W1! !W2!", "!W1!") > 0
vergleich = ' ''ABC'' ''DEF'' ''YXZ'' ';
exec SQL select '1' into :found from Datei where posstr(:vergleich, '"' concat dateifeld concat '"' > 0;
-
cool, klappt, ist gespeichert, so einfach..., danke!!!
-
Die Lösung von Balur geht allerdings auf die Performance! Mit POSSTR kann der Optimizer keinen Index verwenden, d.h. es werden alle Datensätze verarbeitet, was bei großen Tabellen laaaaaaaaaaaange dauern kann.
Bei der Version mit IN kann der Optimizer einen Index verwenden und somit gezielt zugreifen.
Birgitta
-
Das ist von Fall zu Fall unterschiedlich. Ob es auf die Performance geht entscheiden auch weitere Randbedingungen.
Wobei ich bisher noch nie gesehen habe, dass eine IN-Klausel mit Konstanten einen Index bevorzugt hätte.
Similar Threads
-
By wilfried in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 19-07-17, 11:38
-
By hel400 in forum IBM i Hauptforum
Antworten: 13
Letzter Beitrag: 25-05-17, 23:57
-
By COS in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 20-05-17, 21:34
-
By Edi in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 07-11-14, 07:52
-
By RLurati in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 05-08-14, 09:10
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks