[NEWSboard IBMi Forum]

Thema: SQL update

  1. #1
    Joe is offline [professional_User]
    Registriert seit
    Mar 2001
    Beiträge
    365

    Post SQL update

    Hallo Forum.

    mit folgender RPG-Anweisung
    wird aus einer "Zähler-Datei" die nächste
    Rechnungsnummer ermittelt:
    Key Chain Datei
    If %Found
    eval RENR = RENR + 1
    update Datei
    endif

    Das möchte ich mit EINER Sql-Anweisung erledigen.
    C/EXEC-SQL
    C+ update Datei set RENR = RERN + 1 where...
    C/END EXEC

    Der update funktioniert, aber wie stelle ich dem Pgm die um 1 erhöhte RENR zur Verfügung?

    Gruss Joe

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241

    Post

    Nun, SQL funktioniert hier wie bei der normalen Dateiverarbeitung, mittels:

    C/exec sql
    c+ select renr into :myrenr from file where ...
    c/end-exec

    Ohne Commit-Steuerung gibts natürlich ein Problem, dass zwischen Update und Select ein anderes Programm bereits weitergezählt hat.

    Dann geht es nur mit einem Cursor:

    declare mycursor for select renr from file where ... for update

    open mycursor
    fetch into :myrenr
    set :myrenr = :myrenr + 1
    update myfile set renr=:myrenr where current of mycursor

    Dies entspricht im weitesten der RPG-Logik.
    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
    Aug 2001
    Beiträge
    2.873

    Post

    Hallo Joe,

    in einem SQL-Statement geht das nicht.

    Aber, was willst Du erreichen?
    Ein einziges SQL-Statement, statt 5 RPG-Statements plus F-Bestimmungen?

    In diesem Fall würde ich mir eine Funktion basteln, die die neue Rechnungs-Nr. zurückgibt und die Zähler-Datei fortschreibt.

    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

  4. #4
    Joe is offline [professional_User]
    Registriert seit
    Mar 2001
    Beiträge
    365

    Post

    Danke für die schnelle Hilfe.

    Declare und Fetch liefert mir das richtige
    Ergebnis. Mir war nicht bekannt, dass der
    zuerst gelesene Satz bis zum Update bzw. Close gesperrt ist.

    Der Tabellenzugriff soll per SQL erfolgen,
    weil ich mit meinem Programm (VARPG)
    die DB2/400 bzw. die DB2 auf einem Client
    bedienen "können" muss.


    Gruss Joe


    <BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>Original erstellt von B.Hauser:

    Hallo Joe,

    in einem SQL-Statement geht das nicht.

    Aber, was willst Du erreichen?
    Ein einziges SQL-Statement, statt 5 RPG-Statements plus F-Bestimmungen?

    In diesem Fall würde ich mir eine Funktion basteln, die die neue Rechnungs-Nr. zurückgibt und die Zähler-Datei fortschreibt.

    Birgitta
    [/quote]


  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241

    Post

    Dass kann bei VARPG ggf. in die Hose gehen, da die Klausel "for update" AS/400-Spezifisch ist (daher auch die Satzsperre!).
    Evtl. wird die Klausel ignoriert und die Satzsperre wird nicht gesetzt !
    Desweiteren ist auch die Klausel beim Update "current of" ggf. nicht möglich.

    Dies ist nur möglich, wenn "Serversite-Curser" verwendet werden !!

    Ich würde dann, wie Birgitta empfiehlt, eine SQL-Funktion schreiben, die genau diese Probleme behebt.
    Vorteil: Die Funktion läuft auf der AS/400, kann ein RPG-Programm sein und ist auch von VARPG verwendbar.
    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 Update aus zwei Dateien mit 3 Schlüsselfeldern
    By mk in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 13-07-12, 08:53
  2. SQL Update 2 Dateien
    By moskito in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 30-08-06, 17:30
  3. SQL Update über 2 i5 Systeme
    By daniel.ludwig in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 21-07-06, 12:41
  4. Update Syntax SQL
    By wuwu in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-07-06, 15:31
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43

Berechtigungen

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