-
Bibliotheksnamen Variable im Query einbauen?
Moinsen,
ich hab da mal ´ne Frage: Ich habe gehört,
das man Bibliotheksnamen in einem Query auch als Variable übergeben kann.
Stimmt das und wenn ja, wie? Da wir viele Kunden haben, mit verschiedenen Datenbibliotheken, müssen wir die Querys immer anpassen, was bei bei 2-3 ja noch kein Aufwand ist, aber bei fast 100?!
Schönen Dank im Voraus.
-
so sieht das CL aus:
PGM PARM(&BIBLIOTHEK)
DCL VAR(&BIBLIOTHEK) TYPE(*CHAR) LEN(10)
RUNQRY QRY(QRYBIB/MEINEQRY) +
QRYFILE((&BIBLIOTHEK/DATEI))
ENDPGM
Aufruf des CL-Programms:
CALL MEINPROG 'MEINEBIB'
Gruß
HS
-
Helau!
Folgende Lösungen bieten sich an:
1. Beim Runqry die Datei (MIT BIBLIOTHEK) mitgeben.
2. Per OVRDBF vor dem RUNQRY die Datei(en) "umlenken".
Problem bei beiden Lösungen ist, daß man für jedes Query eine besondere Routine schreiben muß....
Grüße
Andreas Göring
BTW: Wer viel mit Query arbeitet sollte sich mal unseren **QueryOptimizer** ansehen: http://www.goering.de/deu/qopti.html
Hier ist ein CMD integriert, der den OVRDBF erheblich erleichtern kann.
[Dieser Beitrag wurde von andigoering am 04. März 2003 editiert.]
-
Hallöchen!
Wie meine beiden Vorredner schon sagten ist das zwar möglich, das Query mittels RUNQRY und/oder OVRDBF flexibel auszuführen, was Du dir aber immer vor Augen halten solltest ist der Anpassungsaufwand:
Änderst Du das Query, so daß sich die Reihenfolge der Dateien ändert fällst Du auf die Nase, gleiches gilt wenn Du eine Datei hinzufügst oder entfernst.
Ich habe leidvolle Erfahrungen damit gemacht, wir sind mittlerweile dazu übergegangen, die meisten Queries auf QM-Query umzuschreiben, was den weiteren Vorteil bietet, daß man volle SQL-Syntax nutzen kann. Das erspart einem z.B. die Bildung des kartesischen Produktes bei Verknüpfung mit *ALL in Query/400 wenn die Schlüsselfelder mal von der Definition nicht zusammenpassen sollten (ist bei sauberem Design nicht der Fall, kommt aber in den besten Familien vor :-).
Grüße
Martin
-
Das ganze etwas variabler zu gestalten geht nur mit etwas Hilfe:
In diesem Beitrag: http://www.as400-forum.de/ubb/Forum1/HTML/000170.html
ist die Quelle eines MI-Programmes enthalten, dass die verwendeten Dateien eines Queries ausliest.
Diese Liste kann dann in einem CLP bearbeitet werden, so dass alle Dateien über RTVOBJD ... RTNLIB(&LIB) und anschließendem OVRDBF umgeleitet werden können.
Die Dateien sollten natürlich in der aktuellen Bibliotheksliste zu finden sein, so dass, je nach Umgebung mit den entsprechenden Dateien gearbeitet werden kann.
-
Guten Morgen
Verschiedene Bibliotheken bedeutet doch auch normalerweise verschiedene Anwendungen.
also warum nicht mittels CL Programm die Bibliotheksliste temporär umstellen. und im QRY mit *lib/Datei arbeiten.
Ich mach das etwa so
/* * ERSETZEN DER BIBLITHEKSLISTE UND NACH PROGRAMMAUFRUF ** */
/* * WIEDER IN DEN ALTEN ZUSTAND SETZEN ** */
DCL VAR(&LIBL) TYPE(*CHAR) LEN(275)
DCL VAR(&LIBLALT) TYPE(*CHAR) LEN(289)
RTVJOBA USRLIBL(&LIBL)
dann CHGLIBL
dann
/* * HIER WIRD DIE ALTE BIBLIOTHEKSLISTE WIEDER EINGESETZT ** */
/* * MIT HILFE VON QCMDEXC ** */
CHGVAR %SST(&LIBLALT 1 8) VALUE('CHGLIBL ')
CHGVAR %SST(&LIBLALT 9 5) VALUE('LIBL(')
CHGVAR %SST(&LIBLALT 14 275) VALUE(&LIBL)
CHGVAR %SST(&LIBLALT 289 1) VALUE(')')
CALL PGM(QCMDEXC) PARM(&LIBLALT 289)
Programmierung
-
Guten Morgen "K_tippi"!
Das mit der LIBL ist ja eine prima Sache....
Jedoch: Bei Query erreichst Du damit NICHTS.
Sobald Du bei der Dateiauswahl Datenfreigabe drückst wird aus *LIBL die tatsächliche Bibliothek..
Es bleibt nur der Weg wie beschrieben....
Wer es komfotabler möchte dem sei der QueryOptimizer bei http://www.goering.de empfohlen.
Einen schönen Tag wünscht
Andreas Göring
-
Hallo Andreas,
soweit ich das verstehe geht es nicht um die Dateinangaben im WRKQRY sondern um den Parameter QRYFile im RUNQRY, also z.B.
RUNQRY QRY(TESTQRY)
QRYFILE((*LIBL/TESTFILE))
Sven
-
So ein Zufall.
Ich habe vorgestern eine Lösung programmiert:
Mit RTVQMQRY SQL-Anweisungen ausgeben
Mit kleinem RPG Dateinamen auslesen und
String (File1)(File2)... an CL-Programm zurückgeben.
Dort RUNQRY QRYFILE(&QRYFILE) ausführen
Similar Threads
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 29-11-06, 18:07
-
By Xanas in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 28-08-06, 12:21
-
By Azubiiiiii in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 03-08-06, 09:44
-
By cheffe1008 in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 16-05-06, 07:45
-
By Hubert Brethauer in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 05-05-06, 12:37
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