[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    2.049

    SQL script mit goto oder schleife

    Moin und frohes Neues...,

    es würde einem ablauf einiges an Zeit sparen wenn ich in einer SEU source eine schleife oder ein goto hin bekäme

    Also
    LIB/QSQLSRC, meinSql --> SEU

    Code:
    begin
    declare continue hander for sqlexeption
    begin end;
    create variable STT int default(5);
    
    TAG-PUNKT oder SCHLEIFE 2 * start
    
    insert into ...  es wird auch STT in der Datei gesetzt 
    insert into ...  es wird auch STT in der Datei gesetzt 
    insert into ...  es wird auch STT in der Datei gesetzt 
    ...
    
    Update ...
    
    set STT 0;
    
    goto oder schleifen ende
    noch nie gebraucht, aber jetzt ...
    geht das?

    Das script wird in einem CLLE Pgm gerufen
    ich kann auch 3 skripte machen
    1: SST = 5
    2: insert ... und Update ...
    3: SST = 0

    und dann einfach das 2. erneut aufrufen

    Und, wenn wir schon dabei sind ...
    könnte ich SST im script abfragen und den Update nur machen wenn es auf 5 steht?

    ja, ich weis ...

    Danke
    VG
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  2. #2
    Registriert seit
    Nov 2020
    Beiträge
    436
    Du könntest bei deinem Script all das in eine sql procedure stecken.
    Vereinfacht gesagt: Du bräuchtest zu begin des scripts lediglich ein create procedure proc1 ...
    und am ende ein call proc1

    Dann kannst alles darin machen was du willst.

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.389
    ... ich verstehe bislang nicht, was du bewerkstelligen willst und mit welchen Mitteln du das versuchen willst. "Declare xyz Handler" ist in der Schublade SQL Procedure und in der sind auch Schleifenkonstrukte. In SQL Skripten geht das nicht.
    Generell würde ich SQL Procedures im DB2 auf der AS400 nur in Betracht ziehen, wenn ich einen positiven Grund dafür habe. Die Implementierung mit dem generierten C Programm mit embedded SQL ist lausig, von schlechter Qualität und wenig transparent. In den meisten Fällen würde ich da per Hand gedengltes embedded SQL in der Programmiersprache meiner Wahl vorziehen.

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

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.942
    Ich denke Du hast ein dynamisches Compound-Statement und willst einfach nur wissen, wie in SQL (PL) eine Schleife programmiert wird.

    SQL unterstützt 3 verschiedene Schleifen:
    • LOOP ... END LOOP; Endlos Schleife, die mit LEAVE :Tag verlassen werden muss.
    • WHILE Bedingung DO ... END WHILE; Do While Schleife, wird solange wiederholt wie die Bedingung wahr ist.
    • REPEAT ... UNTIL Bedingung END REPEAT; Do Until Schleife, wird solange wiederholt wie die Bedingung nach UNTIL falsch ist


    Code:
    TagLeave: Loop 
                -- auszuführende SQL Statements
                If -- Ende-Bedingung
                   Then Leave :TagLeave;
                End If;
                -- auszuführende SQL Statements
             End Loop;   
             
    TagLeave: WHILE -- Condition = True, 
                    -- z.B. WHILE VarDate < Current_Date (Achtung KEIN Semi Colon!)
                 DO -- auszuführende SQL Statements
                -- zusätzliche IF-Bedingung mit LEAVE erlaubt
             End While;
             
    TagRepeat: Repeat 
                 -- auszuführende SQL Statements
                 -- zusätzliche IF-Bedingung mit LEAVE erlaubt     
               Until -- Condition - wenn Bedingung = True 
                     -- z.B. UNTIL VarDate >= Current Date (Achtung KEIN Semi Colon!)      
               End Repeat
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.785
    Funktioniert dies auch im SQL-Script via ACS, Embedded execute oder nur in Function/Procedures?

    Allternativ kannst du die Schleife auch im CLLE/CLP durchführen und simple RUNSQL aufrufen.
    Diese kannst du auch in einer Variablen mit Parametern und *CAT zusammenbauen.
    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

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.942
    Das ist SQL Programmierung und funktioniert einer SQL Routine (Stored Procedure, User Defined (Table) Function, SQL Trigger).
    Das gleiche gilt für ein dynamisches Compound Statement, bei dem im Untergrund eine Stored Procedure in der QTEMP erstellt und anschließend ausgeführt wird.
    Dynamic Compound Statement
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.785
    Da empfehle ich dann doch lieber die klassische embedded Methode.
    Klar, wenn einer nur SQL und keine HLL-Sprachen kennt, für den mag das dann sinnvoll sein;-).
    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
    Jun 2001
    Beiträge
    2.049
    Danke Euch

    ich suchte tatsächlich nach einer möglichkeit in einer SEU Source die via RunSQLStm aufgerufen wird.

    Hintergrund sind mehrere Änderungen / Woche die dann von der Fachabteilung ohne 'EDV/SQL'- Kentnissen gemacht hätten werden sollen.

    Hat sich erübrigt, nun versucht man endlich die Ursache ab zu stellen anstatt die Symtome zu bekämpfen.
    Wenn der richtige meckert, spuren auch die Lieferanten

    Also... weiter geht's

    Danke
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

Similar Threads

  1. Schleife hängt beim ersten Record
    By pabloesco in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 17-07-20, 15:17
  2. SQL - Alternative zu Insert meherer Datensätze in einer Schleife?
    By Dominic K. in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 14-09-16, 18:16
  3. SQL Insert in schleife
    By Robi in forum IBM i Hauptforum
    Antworten: 20
    Letzter Beitrag: 16-03-09, 11:32
  4. Einfache CL Schleife
    By Techniker in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 07-02-07, 15:57
  5. Schleife genau 5x durchlaufen?
    By mgraskamp in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 20-10-05, 12:19

Berechtigungen

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