[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2003
    Beiträge
    331

    Cool SQL .. for update of (RPG embedded SQL)

    Hallo,

    ich habe folgende SQL-Anweisungen im RPG definiert:

    PHP-Code:
     c/exec sql                            
     c
    +  declare C_lagbes_02 cursor for    
     
    c+  select lapartlarega             
     c
    +  from lagbespf                     
     c
    +      where  lapart     >   0       
     c
    +        and  lafirm     =   :bifirm 
     c
    +        and  lavgre02   =   'X'     
     
    c+        and  larega     >   '000000'
     
    c+        and  larega     <   '999999'
     
    c+  order by  laregalapart          
     c
    +  for update of laregalavgre02    
     c
    /end-exec   
     c
    /exec sql                 
     c
    +  open c_lagbes_02       
     c
    /end-exec 
    und

    PHP-Code:
     c/exec sql                                                         
     c
    +  fetch  C_lagbes_02 into                                        
     c
    +        :lapart,                                                 
     
    c+        :larega                                                  
     c
    /end-exec 
    und

    PHP-Code:
     c/exec sql                                      
     c
    +        update  lagbespf                      
     c
    +          set  larega   =  :Rang,             
     
    c+               lavgre02 =  ' '                
     
    c+          where  current of c_lagbes_02       
     c
    /end-exec 

    In der Declare-Anweisung habe ich eine Sortierung (order by larega, lapart) angegeben und gleichzeitig ein Update for larega etc.
    Das wird angemeckert.

    Kann ein For Update nicht für ein ORDR BY - Feld verwendet werden ?

    ( Würde hier bzgl. Sortierung keine Probleme geben, da gleichzeitig ein Ausschlußkennzeichen mit ausgegeben wird. )

    mfg.
    Ludger

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.238
    Tja, leider ist das so:

    Positioned UPDATE statements identifying the cursor associated with a select-statement can update all
    updateable columns, if:
    * The select-statement does not contain one of the following:
    – An UPDATE clause
    – A FOR READ ONLY clause
    – An ORDER BY clause
    * The DECLARE CURSOR statement does not contain a SCROLL keyword without the DYNAMIC
    keyword.

    Da SQL ggf. bei Order-By die Daten in eine temporäre Ergebnistabelle kopiert, geht der Bezug zum Original verloren.

    In solchen Fällen sollte ein Update-Where verwendet werden, was im Übrigen nicht langsamer ist, wenn für die Where-Klausel ein eindeutiger Index vorhanden ist.
    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
    Jul 2003
    Beiträge
    331
    Danke für die Antwort.

    Ich habs mir beinahe gedacht.

    Dann werde ich den Update mit einem "normalen SQL-Update" vornehmen.

    mfg. Ludger

Similar Threads

  1. embedded SQL in RPG
    By muadeep in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 03-08-06, 13:25
  2. RPG mit Embedded SQL, JOIN ..
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 18-06-06, 12:14
  3. Embedded SQL in RPG
    By lossin in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 23-08-05, 12:00
  4. embedded SQL in ILE RPG, UPDATE
    By Zupfl50 in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 06-10-04, 21:04
  5. EMBEDDED SQL in RPG
    By Ludger Muhmann in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 30-07-02, 09:49

Berechtigungen

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