[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2006
    Beiträge
    3

    SQL UDF Prob mit leeren Feldern

    Hallo,
    ich hab ein Problem mit einer im interactiven SQL erstellten UDF. Diese UDF soll aus einem 7st gepackten Feld mit dem Aufbau zB 1060517 ein Datumsfeld machen und dieses zurückliefern. Das tuts auch manchmal. Manchmal heißt, das anscheinend dieses Feld immer gefüllt sein muß. Es scheint so zu sein, das die UDF mit einem leeren Feld nichts anfangen kann, denn es kommt folgende Fehlermeldung, wenn das Feld in der Datei leer ist:
    1 -- Das externe Programm oder Serviceprogramm hat SQLSTATE 22007
    zurückgegeben. Die vom Programm zurückgegebene Textnachricht ist:
    SQLP_L2.RES_DATEZeit- oder Zeitmarkenwert ungültig. .

    Der Aufruf sieht so aus:
    select sm2dat(FELD),FELD2 from LIB/DATEI

    sm2dat ist die UDF und sieht so aus:

    create function LIB/sm2dat
    (sm_date dec(7, 0)) returns date
    language sql
    BEGIN
    declare res_date date;
    set res_date=
    date('20' concat substr(char(sm_date), 2, 2)
    concat '-' concat substr(char(sm_date), 4, 2) concat '-'
    concat substr(char(sm_date), 6, 2));
    return res_date;
    END

    Danke schonmal für die Hilfe!

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Per SQL-Exception-Handler den Fehler abfangen und dann NULL zurückmelden.

    Allerdings würde ich nicht CHAR sondern DIGITS verwenden, das in ein Zwischenfeld packen und vorher 19000000 auf das Feld addieren. Denn was machst du mit z.b. 0991231 (also dem 31.12.1999) ? CHAR gibt den Wert linksbündig ohne Vornull aus.
    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

  3. #3
    Registriert seit
    May 2006
    Beiträge
    3
    Hallo,

    vielen Dank für die schnelle Hilfe!
    Was mache ich in einer interaktiven Abfrage?
    Auch der Tip mit DIGITS ist prima. Allerdings hat die DB keine Datensätze vor 2004, das Problem kann also nicht auftauchen.

  4. #4
    Registriert seit
    May 2006
    Beiträge
    3
    Hallo, die 2.
    Wenn man erst die kleinen, grauen Zellen einschaltet und dann tippt, erspart man sich und anderen machen Unsinn.
    Hab in die Funktion eine Abfrage auf den Feldinhalt eingebaut und gebe dann entsprechend NULL oder das Datum zurück. Funktioniert!
    Wenn man es richtig macht, funktionierts auch
    Nochmal Danke!

Similar Threads

  1. Antworten: 11
    Letzter Beitrag: 18-07-16, 09:49
  2. SQL: Aus mehreren Feldern ein Datum erkennen
    By I0N in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 21-11-06, 12:44
  3. SQL UDF Function ausführung mit Fehler
    By jakarto in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-07-06, 13:41
  4. sql select mit zusätzl. Feldern
    By rr2001 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 07-07-06, 09:56
  5. SQL 400 UDF
    By SReusch in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 13-01-06, 07:13

Berechtigungen

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