[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2004
    Beiträge
    24

    SQL Selektion mit LIKE

    Guten Tag,

    ich habe Probleme mit folgendem SQL-Statement:

    EXEC SQL
    DECLARE SQLCUR2 CURSOR FOR SELECT LAUFNR, BIBLIOTHEK,
    OBJEKT, OBJEKTTYP, BESCHREIB, LASTUSEDAT, ABTEILUNG,
    PRIRORITA, TEVBEBRAU, DATMUT, MUTUSER, TYP, RECORDGEL,
    RELEVANT FROM AIGDBA1F01 WHERE BIBLIOTHEK LIKE :W-D1BIBLIO
    AND OBJEKT LIKE :W-D5OBJEKT AND BESCHREIB LIKE :W-D5BESCHR
    ORDER BY BIBLIOTHEK, OBJEKT
    END-EXEC.


    Lesen:

    EXEC SQL
    FETCH NEXT FROM SQLCUR2 INTO :LAUFNR, :BIBLIOTHEK, :OBJEKT,
    :OBJEKTTYP, :BESCHREIB, :LASTUSEDAT, :ABTEILUNG, :PRIRORITA,
    :TEVBEBRAU, ATMUT, :MUTUSER, :TYP, :RECORDGEL, :RELEVANT
    END-EXEC.

    SQLCODE = '000000100'
    ODP created.
    Blocking used for query.
    Cursor SQLCUR1 opened.
    1 rows fetched from cursor SQLCUR1.
    Unable to retrieve query options file.

    kann mir jemand einen Tip geben, was ich falsch mache.
    Danke für die Hilfe

    Gruss Reno

  2. #2
    Registriert seit
    Jan 2001
    Beiträge
    835
    Hallo Reno,

    was steht denn in den Feldern ?
    z.B. W-D1BIBLIO = '%SSS%'

    Der like sucht dann alle Inhalte mit SSS
    gruss Michael




    ich habe Probleme mit folgendem SQL-Statement:

    EXEC SQL
    DECLARE SQLCUR2 CURSOR FOR SELECT LAUFNR, BIBLIOTHEK,
    OBJEKT, OBJEKTTYP, BESCHREIB, LASTUSEDAT, ABTEILUNG,
    PRIRORITA, TEVBEBRAU, DATMUT, MUTUSER, TYP, RECORDGEL,
    RELEVANT FROM AIGDBA1F01 WHERE BIBLIOTHEK LIKE :W-D1BIBLIO
    AND OBJEKT LIKE :W-D5OBJEKT AND BESCHREIB LIKE :W-D5BESCHR
    ORDER BY BIBLIOTHEK, OBJEKT
    END-EXEC.


    Lesen:

    EXEC SQL
    FETCH NEXT FROM SQLCUR2 INTO :LAUFNR, :BIBLIOTHEK, :OBJEKT,
    :OBJEKTTYP, :BESCHREIB, :LASTUSEDAT, :ABTEILUNG, :PRIRORITA,
    :TEVBEBRAU, ATMUT, :MUTUSER, :TYP, :RECORDGEL, :RELEVANT
    END-EXEC.

    SQLCODE = '000000100'
    ODP created.
    Blocking used for query.
    Cursor SQLCUR1 opened.
    1 rows fetched from cursor SQLCUR1.
    Unable to retrieve query options file.

    kann mir jemand einen Tip geben, was ich falsch mache.
    Danke für die Hilfe

    Gruss Reno[/QUOTE]

  3. #3
    Registriert seit
    Jun 2004
    Beiträge
    24
    Hier meine möglichen Inhalte:

    '%xxx%'
    'BIBLIOTHEK'
    '%%'
    Gruss Reno

    Zitat Zitat von mk
    Hallo Reno,

    was steht denn in den Feldern ?
    z.B. W-D1BIBLIO = '%SSS%'

    Der like sucht dann alle Inhalte mit SSS
    gruss Michael




    ich habe Probleme mit folgendem SQL-Statement:

    EXEC SQL
    DECLARE SQLCUR2 CURSOR FOR SELECT LAUFNR, BIBLIOTHEK,
    OBJEKT, OBJEKTTYP, BESCHREIB, LASTUSEDAT, ABTEILUNG,
    PRIRORITA, TEVBEBRAU, DATMUT, MUTUSER, TYP, RECORDGEL,
    RELEVANT FROM AIGDBA1F01 WHERE BIBLIOTHEK LIKE :W-D1BIBLIO
    AND OBJEKT LIKE :W-D5OBJEKT AND BESCHREIB LIKE :W-D5BESCHR
    ORDER BY BIBLIOTHEK, OBJEKT
    END-EXEC.


    Lesen:

    EXEC SQL
    FETCH NEXT FROM SQLCUR2 INTO :LAUFNR, :BIBLIOTHEK, :OBJEKT,
    :OBJEKTTYP, :BESCHREIB, :LASTUSEDAT, :ABTEILUNG, :PRIRORITA,
    :TEVBEBRAU, ATMUT, :MUTUSER, :TYP, :RECORDGEL, :RELEVANT
    END-EXEC.

    SQLCODE = '000000100'
    ODP created.
    Blocking used for query.
    Cursor SQLCUR1 opened.
    1 rows fetched from cursor SQLCUR1.
    Unable to retrieve query options file.

    kann mir jemand einen Tip geben, was ich falsch mache.
    Danke für die Hilfe

    Gruss Reno
    [/QUOTE]

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.877

    Host Variablen

    Hallo,

    wie sind die Host-Variablen (W-....) definiert?
    Mit fixer oder variabler Länge?

    Bei Feldern mit fixer Länge werden sieht der Feld-Inhalt etwa wie folgt aus: '%ABC% '
    Das heißt es wird nach einem String gesucht, der irgendwo 'ABC' enthält und am Ende eine bestimmte Anzahl *Blanks stehen hat.

    Bei Feldern mit variabler Länge sieht der Feld-Inhalt etwa wie folgt aus: '%ABC%'
    Es werden alle Strings gefunden, die irgendwo ABC enthalten.

    Wenn Du mit Feldern fixer Länge arbeitest, solltest Du in deinem Declare-Statement die Scalare Funktion TRIM verwenden, um die überflüssigen Blanks zu entfernen.

    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

  5. #5
    Registriert seit
    Jun 2004
    Beiträge
    24
    Zum Beispiel:

    01 W-D1BIBLIO PIC X(12).
    01 W-D5OBJEKT PIC X(12).
    01 W-D5BESCHR PIC X(102).

    Nur im Cobol funktioniert es nicht !!
    Aber im manuel im STRSQL geht es ohne Probleme, verstehe es nicht.
    kannst Du mir ein Beispiel zeigen, wie man mit TRIM vorgeht.

    Danke und Gruss Reno

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.250
    EXEC SQL
    DECLARE SQLCUR2 CURSOR FOR SELECT LAUFNR, BIBLIOTHEK,
    OBJEKT, OBJEKTTYP, BESCHREIB, LASTUSEDAT, ABTEILUNG,
    PRIRORITA, TEVBEBRAU, DATMUT, MUTUSER, TYP, RECORDGEL,
    RELEVANT FROM AIGDBA1F01 WHERE BIBLIOTHEK LIKE
    trim(:W-D1BIBLIO)
    AND OBJEKT LIKE
    trim(:W-D5OBJEKT)
    AND BESCHREIB LIKE
    trim(:W-D5BESCHR)
    ORDER BY BIBLIOTHEK, OBJEKT
    END-EXEC.
    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

  7. #7
    Registriert seit
    Jun 2004
    Beiträge
    24
    Ich habe es mit TRIM angepasst, leider den gleichen Effekt.


    STRSQL (so geht es): zum Beispiel

    SELECT LAUFNR, BIBLIOTHEK, OBJEKT, OBJEKTTYP, BESCHREIB,
    LASTUSEDAT, ABTEILUNG, PRIRORITA, TEVBEBRAU, DATMUT, MUTUSER, TYP,
    RECORDGEL, RELEVANT FROM zzrelu/AIGDBA1F01 WHERE BIBLIOTHEK =
    'AIGTOOL' AND OBJEKT like '% ' and BESCHREIB like
    '% ' ORDER BY BIBLIOTHEK, OBJEKT


    aus dem COBOL (SQLCBLLE):

    EXEC SQL
    DECLARE SQLCUR2 CURSOR FOR SELECT LAUFNR, BIBLIOTHEK,
    OBJEKT, OBJEKTTYP, BESCHREIB, LASTUSEDAT, ABTEILUNG,
    PRIRORITA, TEVBEBRAU, DATMUT, MUTUSER, TYP, RECORDGEL,
    RELEVANT FROM AIGDBA1F01 WHERE BIBLIOTHEK LIKE
    trim(:W-D1BIBLIO) AND OBJEKT LIKE trim(:W-D5OBJEKT) AND
    BESCHREIB LIKE trim(:W-D5BESCHR) ORDER BY BIBLIOTHEK, OBJEKT
    END-EXEC.



    Inhalt Variablen im Debug-Mode:

    W-D5OBJEKT = '% '
    W-D5BESCHR =
    ....5...10...15...20...25...30...35...40...45...50 ...55...60
    1 '% '
    61 ' '
    W-D1BIBLIO = 'AIGTOOL '
    SQLCODE = 000000100.


    EXEC SQL
    FETCH NEXT FROM SQLCUR2 INTO :LAUFNR, :BIBLIOTHEK, :OBJEKT,
    :OBJEKTTYP, :BESCHREIB, :LASTUSEDAT, :ABTEILUNG, :PRIRORITA
    :TEVBEBRAU, ATMUT, :MUTUSER, :TYP, :RECORDGEL, :RELEVANT
    END-EXEC.


    Gruss Reno

Similar Threads

  1. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  2. SQL UDF Function ausführung mit Fehler
    By jakarto in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-07-06, 13:41
  3. LIKE keyword in Embedded SQL
    By woki in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 18-12-04, 12:28
  4. sql / like mit hex möglich ?
    By malzusrex in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 12-07-02, 10:09
  5. SQL Funktion " Like"
    By Stefan_R in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 23-01-02, 16:08

Berechtigungen

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