[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Nov 2004
    Beiträge
    325

    SQL zum verzweifeln

    Moin *all,

    ich habe hier eine merkwürdiges Problem.
    Mein SQL

    Exec SQL Declare C_ticket Cursor For Select *
    From ANWDTASTM.PORTALP
    Where POAEAR = '3'
    AND POSTAT <> '*'
    AND POUSDT = : Sysdat bzw. 05.02.2024 oder 2024-02-05
    Exec SQL Open C_ticket ;

    Funzt nicht mehr mit folgendem Fehler: SQL0303
    Variable POUSDT nicht kompatibel oder Wert zu lang.
    Egal, ob ich mit einem festen Wert oder mit der Variablen rangehe. Es kommt immer der selbe Fehler.

    Ach so, das Feld POUSDT ist ein Datumswert.

    Habt Ihr eine Idee?
    mfg DKSPROFI

  2. #2
    Registriert seit
    Nov 2020
    Beiträge
    331
    Wenn POUSDT vom Type ein Datum ist, dann sollte die RPG Variable auch vom Typ ein Datum sein.
    Oder du konvertierst um.

  3. #3
    Registriert seit
    Jan 2007
    Beiträge
    905
    Wenn es ein Datum ist, könntest Du auch mit CURRENT_DATE vergleichen.
    kf

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Hostvariablen sollten zum Datantyp passen.
    Jetzt kommt es noch darauf an, wie du das Dateformat im RPG festgelegt hast:
    - RPG-Header DateFmt() (o.ä.)
    - SQL-Option datfmt
    Die SQL-Ersatzvariablen (SQLnnnn) werden im Format von SQL-Option definiert und deine Hostvariable dann ggf. konvertiert.
    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

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Wie ist denn SYSDAT überhaupt definiert? Datum oder alphanumerisch?
    Wird beim Compilieren die Option DATFMT (oder in einem SET OPTION STATEMENT) auf ein Format mit einem 4-stelligen Jahr gesetzt.
    Und was genau steht in der Variablen SYSDAT bevor der Cursor geöffnet wird.

    Ansonsten ist SQL in der Lage jede gültige alphanumerische Darstellung eines Datums- und Zeit-Werts zu erkennen und richtig zu konvertieren, also YYYY-MM-DD, DD.MM.YYYY, MM/DD/YYYY, YYYYDDD (lfd.Tag im Jahr, YYYY-MM-DD-HH.MI.SS.MSMSMS, YYYYMMDDHHMISS.
    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

  6. #6
    Registriert seit
    Nov 2004
    Beiträge
    325
    Hallo Birgitta,

    SYSDAT ist ein Datumsfeld, Datenart L.
    die SET OPTION Geschichte ist DATFMT=*ISO
    In der Variablen steht das Tagesdatum in der Form TT.MM.JJJJ oder JJJJ-MM-TT oder CURENT-DATE. Alles ausprobiert nichts hilft, immer noch SQL0303.
    mfg DKSPROFI

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Passiert der Fehler bereits beim Open oder erst beim Fetch?
    Dann kann die Reihenfolge der Zielfelder in der DS abweichend sein vom Ergebnis des Select * und dann ein Umwandlungsfehler stattfinden..
    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

  8. #8
    Registriert seit
    Nov 2004
    Beiträge
    325
    Hallo Baldur,

    der Fehler kommt erst beim FETCH.
    mfg DKSPROFI

  9. #9
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    Schau dir mal an, was in POUSDT in den Datensätzen steht.
    Auch in Typ 'L' Feldern kann mal Schrott stehen.
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Dann prüfe mal in der erweiterten Umwandlungsliste (SQL-Auflösung), ggf. mit *LVL2 Umwandlung, wie die SQLnnnn Felder des Fetch definiert sind und ob diese denn zu den Zielfeldern passen.
    Ich habe da schon mal das Problem, dass zur Compilezeit eine andere Tabelle verwendet wird als zur Laufzeit (LIBL, OVRDBF) und sich daher dann Verschiebungen ergeben.
    Bei SQL gab es schon immer die Regel, die ich auch gerne verletze:
    Verwende nie
    - Select *
    - Inser into Table Values()
    - update set row
    Auch wenn das alles schön praktisch ist, zur Laufzeit oder beim Wechsel zum Kundensystem gibts da schon mal Probleme, die bei klassischem RLA ja mit passendem CPF-Fehler abgewiesen werden.
    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

  11. #11
    Registriert seit
    Nov 2004
    Beiträge
    325
    Hallo Baldur,

    das Feld ist 10 stellig mit Datumsformat *ISO definiert. Ich habe das Feld jetzt ausgelagert und Frage nach dem Fetch ab, aber immer noch der SQL-Fehler.

    Meinst du ich soll das mal melden?
    mfg DKSPROFI

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Bitte überprüfe auch das SQLnnnn-Feld auf das Format, dass bei der Zuweisung angegeben wird.
    Vielleicht betrifft es auch ein anderes Feld?
    Wie gesagt, das kann man bei der *LVL2-Compileroption gut sehen.
    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

Similar Threads

  1. SQL Rätsel zum WochenEnde - Kombinationen ermitteln
    By MGJ79 in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 26-02-16, 17:20
  2. SQL zum wahnsinnig werden
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 07-03-14, 19:28
  3. RUNRMTCMD zum Verzweifeln
    By boonkelz in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 13-10-09, 08:08
  4. Befehl zum Konvertieren DDS in SQL
    By deni87991 in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 31-08-06, 12:05
  5. SQL Frage zum Create View
    By cicero22 in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 10-11-03, 12:15

Berechtigungen

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