PDA

View Full Version : SQL und CLLE



Seiten : [1] 2 3

camouflage
12-03-21, 13:03
Frage an die SQL Nerds

Kann ich in einem CLLE mit SQL auch folgendes (analog fetch) machen:

Ich lese ein File mit einem "like value" z.B. alle Kunden die mit Kd-Nr. 1 beginnen
und starte eine Anwendung mit Parameter ganze Kundennummer, bis kein Record mit 1% gefunden wird.

... oder soll ich dafür ein kleines RPG Programm bemühen?

Danke für die Hilfe

Robi
12-03-21, 13:17
sql?

opnqryf + ovrdbf mit rcvf gehen dafür

B.Hauser
12-03-21, 13:29
Du erstellst ganz einfach in deinem CLLE eine View basierend auf dem kompletten SELECT-Statement (geht mit RUNSQL) und liest dann durch diese View, wie durch eine ganz normale Datei (DCLF ... RCVF) .

Du musst die View lediglich zur Compile-Zeit definiert haben, damit du sie mit DCLF registrieren kannst.

Birgitta

Fuerchau
12-03-21, 13:59
Da CLP für Select-SQL's weniger geignet ist und du RPGLE kannst, bist du wesentlich flexibler, wenn du RPGLE nimmst. Dann kannst du deine Whereklausel auch parametrieren.
Ein CLP liest von Anfang bis Ende. Du müsstest also on the fly in der QTEMP die View immer erst neu erstellen.

Robi
12-03-21, 14:19
Ein CLP liest von Anfang bis Ende.

Deswegen ja der OPNQRYF! Damit geht ne Menge!

camouflage
12-03-21, 14:20
Danke für die Antworten.

@Robi: Der opnqryf erinnert mich doch zu sehr an AS400. ;-)
@Birgitta: Die Lösung mit der View hätte mich überzeugt, bis ich auf wechselnde where Konditionen gestossen bin. Da hätte ich die View - innerhalb einer CLLE - immer wieder neu erstellen müssen.

Deshalb folge ich auch Baldurs Vorschlag, bzw. hab das SQLRPGLE schon praktisch fertig.

Fuerchau
12-03-21, 14:30
Ich war schon immer der Meinung, für gestellte Aufgaben die beste Alternative zu wählen.
Bei SQL-Selects ist es eher eben RPGLE als CLLE.
Für andere SQL's kannst du nun gerne auch RUNSQL statt RUNSQLSTM verwenden, da du da eben auch Parameter haben kannst.
Und OPNQRYF ist ja wirklich eher V3 als V7.

B.Hauser
12-03-21, 14:45
Danke für die Antworten.
@Birgitta: Die Lösung mit der View hätte mich überzeugt, bis ich auf wechselnde where Konditionen gestossen bin. Da hätte ich die View - innerhalb einer CLLE - immer wieder neu erstellen müssen.


... und wo liegt das Problem? Eine View ist lediglich ein gesichertes SELECT Statement und in CLLE kannst Du eine Datei auch mehrfach lesen.

camouflage
12-03-21, 14:56
Birgitta,

wenn sich innerhalb des Selects ein "where" Wert ändert, muss ich die View neu erstellen. Das ist der Punkt, der mir nicht so gefällt.

B.Hauser
12-03-21, 15:15
Dann solltest Du wohl doch ein RPG-Programm schreiben!