[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2002
    Beiträge
    792

    Embedded SQL Newbie

    Hallo,

    ich habe das letzte Thema schon mitgelesen. Der Workshop von Birgitta sieht auch sehr interessant und gut aus. Ich wollte jetzt allerdings mal kein starten und ein ganz "einfaches" Delete auf eine Tabelle machen. Das ganze sieht dann bei mir so aus:

    FERRPF O E disk RENAME(ERRPF:SQLSATZ)
    DKUNDE S 5A

    /FREE
    Kunde='ZZ001';
    /END-FREE

    C/Exec SQL
    C+ Delete
    C+ From TEMP/KUNDEN
    C+ Where KDNR = :Kunde
    C/End-Exec
    C move SQLCOD Err
    C write sqlsatz
    C seton LR

    Allerdings wird der Kunde nicht gelöscht. Ich habe dann dann die "ERRPF" mit eingebaut um den Fehler zu sehen. Er scheibt Fehlercode "700Q". Was bedeutet das? Gibt es ein Handbuch indem ich die Fehlercodes finde? Liegt das irgendwo als PDF vor? Vielen Dank im Voraus.

    Gruß

    Sascha

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.248
    Den Fehler kenn ich zwar nicht (müsste was im Joblog stehen), aber setze mal das Commit aus:

    /exec sql set option commit=*none
    /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

  3. #3
    Registriert seit
    Apr 2002
    Beiträge
    792
    Ja danke daran lag es. Im Joblog steht die Meldung Teildatei KUNDEN nicht in Journal *N aufgezeichnet. mit Commit=*NONE funktioniert es. Wie hägt das mit dem Commit und dem Journal denn zusammen?

  4. #4
    Registriert seit
    Dec 2000
    Beiträge
    450
    Commitment Control setzt die Journalisierung voraus. Irgendwo muss ja stehen, was im Fehlerfall zurückgesetzt werden muss. Und da ist der Journalreceiver, der diese Informationen aufnimmt.

    Gruß
    Bruno

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

    SQL-Nachrichten

    Zitat Zitat von JonnyRico
    Gibt es ein Handbuch indem ich die Fehlercodes finde?
    Hallo Sascha,

    bei jedem SQL-Statement wird die SQLCA gefüllt.
    Aus den Feldern SQLCOD und SQLSTT kannst Du den Fehler-Status entnehmen.

    SQLCOD ist Standard iSeries / SQLSTT ist SQL-Standard.
    Zu einem SQLSTT kann es mehrere SQLCODs geben.

    Beschreibungen zu den SQLCODs findest Du unter:
    SQL Message Finder

    Ansonsten kann man den Nachrichten-Text auch direkt aus der entsprechenden Nachrichten-Datei entnehmen. Wie das geht steht in folgendem Artikel:

    Vom SQLCOD zur Fehlernachricht


    Der SQLCOD "700Q" müsste allerdings falsch sein. Die Fehlercodes für Commitment-Steuerung sind alle im Bereich 7000. Wie ist dein Ausgabe-Feld Err definiert? Binär oder Integer? Wenn nicht könnte das ein Problem sein.

    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

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    genauer müsste man sagen: irgendwo muss ja festgelegt werden in welches Journal protokolliert wird. Falls man nämlich nur After Images erzeugen lässt, kann man trotzdem mit Commit arbeiten (dann wird nämlich die Journalisierung automatisch eskaliert).
    Ich würde allerdings generell zur Journalisierung aller Dateien mit before und after images raten - auch wenn man keine Commit Steuerung einsetzt; alleine die Vorteile bei Fehler Abklärungen sind es wert.

    mfg

    Dieter Bender

    Zitat Zitat von Bruno Jakob
    Commitment Control setzt die Journalisierung voraus. Irgendwo muss ja stehen, was im Fehlerfall zurückgesetzt werden muss. Und da ist der Journalreceiver, der diese Informationen aufnimmt.

    Gruß
    Bruno
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.248
    SQL-Fehlercodes sind grundsätzlich Negativ !
    700Q ist also als negativer Wert zu interpretieren (im Debugger wird das auch negativ angezeigt: -7008.)
    Positve Codes sind keine Fehler sondern Warnungen (z.B. 100=EOF).
    SQL-Fehler findest du in der QSQLMSG (wrkmsgd () qsqlmsg) mit der ID SQLxxxx.
    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. Embedded SQL in VARPG
    By Squall in forum NEWSboard Programmierung
    Antworten: 23
    Letzter Beitrag: 18-10-06, 12:01
  2. embedded SQL in RPG
    By muadeep in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 03-08-06, 13:25
  3. RPG mit Embedded SQL, JOIN ..
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 18-06-06, 12:14
  4. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  5. Character verbinden in Embedded SQL
    By e_sichert in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 03-05-06, 10:47

Berechtigungen

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