[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.102

    Statisches Embedded SQL mit IN

    Hallo,
    weiß jemand, ob man ein IN Prädikat im statischen embedded SQL einsetzen kann, bzw. wie das funktioniert?

    Folgendes Statement läuft zwar, liefert aber nicht immer die korrekten Ergebnisse.
    Code:
          where ...
             zp_belawer in :g#belawerSel)
    In der Datei steht im Feld zp_belawer (char1) ein V.

    Wenn in der Hostvariable "V", steht klappt es. Ich möchte aber, dass der User eine Reihe von Werten eingeben kann. In der Hostvariable sollte also so etwas wie "V, K, E" stehen.
    Dann klappt die Selektion aber nicht.

    Dieter

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Das geht so nicht!
    Die einzige Möglichkeit ist, eine Anzahl von Variablen vorzudefinieren und im (statischen) embedded SQL zu verwenden.
    Die erfassten Werte werden in die Variablen eingepflegt und in die "fehlenden" wird einfach der erste eingegebene Wert wieder übernommen.

    Mit Trick17 geht's auch statisch, aber wahrscheinlich ist das nicht unbedingt perfomant.
    1. Die erfassten Werte werden hintereinander in einen String geschrieben, der dann mit LIKE durchforstet wird.
    2. Auswahl V, K, E --> String 'V, K, E,'
    3. LIKE-Anweisung
    :String like '%' concat Trim(Spalte) concat ',' concat '%'

    Ansonsten hilft nur dynamisches SQL.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Habe gerade gesehen, dass ich die gleiche Frage vor ein paar Jahren schon mal gestellt habe. Das scheint also nicht zu gehen. Werde deshalb dynamisches SQL verwenden.

    Dieter

  4. #4
    Registriert seit
    Jun 2001
    Beiträge
    1.973
    hattest du die Frage nicht schon mal?

    http://newsolutions.de/forum-systemi...highlight=robi

    -> Hat sich erledigt, du hast es gemerkt ...
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Natürlich geht das auch mit statischem SQL.
    Du benötigst halt nur entsprechend viele Host-Variablen:

    in (: MyV1, : MyV2, : MyV3, ..., : MyVn)

    Hier kann u.U. auch ein Index verwendet werden.
    An Stelle von Like kannst du auch posstr() verwenden:

    where posstr(MyVar, : MyHostVar) > 0

    MyHostVar enthält die Liste der Kennzeichen. Allerdings kann hier kein Index verwendet werden.
    Je nach weiteren Where-Bedingungen spielt ein Index über dieses Feld aber sowieso keine besondere Rolle.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Danke an alle.
    Dieter

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    ... man könnte natürlich eine table function schreiben, die einen String als Tabelle darstellt und dannn diese function verwenden
    select ...
    from ...
    where ... in (select (string2table( :myVar))
    folgende Oracle Lösung (http://blog.tanelpoder.com/2007/06/2...ble-tokenizer/) sollte nach V7 im DB2 auf AS/400 portierbar sein.

    D*B

    der so seine Zweifel hat, dass das auf der AS wirklich brummt, da dürfte die dynamic SQL Variante mit variablem SQLString einfacher und schneller sein.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Nochmals Danke für alle Antworten. Ich habe jetzt dynamisches SQL verwendet. Das mag ich eigentlich nicht so gerne, weil man da im RDi kein Syntax-Highlighting und keine Compilerprüfung erhält.

    Dieter

Similar Threads

  1. MSG aus embedded SQL
    By malzusrex in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 02-06-15, 12:26
  2. embedded sql substring
    By tarkusch in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 29-06-14, 16:12
  3. EMBEDDED SQL in RPG
    By Ludger Muhmann in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 30-07-02, 10:49
  4. Datenabbildungsfehler mit embedded SQL
    By Joshua in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 11-04-02, 10:42
  5. Embedded SQL
    By Stefan_R in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 12-10-01, 10:47

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •