-
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!)
-
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.
-
... 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
-
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
-
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.
-
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
-
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;-).
-
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
-
By pabloesco in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 17-07-20, 15:17
-
By Dominic K. in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 14-09-16, 18:16
-
By Robi in forum IBM i Hauptforum
Antworten: 20
Letzter Beitrag: 16-03-09, 11:32
-
By Techniker in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 07-02-07, 15:57
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks