-
SQL mit enthaltenen Parametern innerhalb von CL's
Hallo zusammen,
es scheint ja grundsätzlich möglich zu sein, SQL Funktionen wie "Update" oder "Insert" innerhalb eines CL's ausführen zu lassen..?
Bin bereits auf Befehle wie runsql / runsqlstm gestoßen, mir fehlt aber noch der "Ah-Effekt"
Folgendes ist wichtig:
Die SQL Anweisung soll in einem CL laufen, da anhand von "Wenn Dann" jeweils verschiedene SQL Anweisungen ausgeführt werden sollen.
Außerdem müssten die Werte aus Variablen bestehen, welche durch Parameter dann initialisiert werden.
Hat jemand Ideen, einen Ansatz oder ein Beispiel. Ich bin da für alles dankbar.
Vielen lieben Dank im Voraus.
Grüße
_MG_
-
QMQRY ist Dein Freund.
D*B
-
mit strqm und 1 ein qmqry erfasssen
mit strqmqry das qmqry ausführen
wenn du strqm zum 1. mal macht mußt du dir in deinem Profil erst alle Möglichkeiten erlauben (10)
Robi
der nun 49 antworten in seiner Umfrage hat!!!
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
Du kannst natürlich auch direkt den neuen RUNSQL verwenden. Allerdings musst du den Befehl dann zusammenstoppeln:
chavar &mysql ('UPDATE MYFILE SET F1=''' *CAT &F1 *CAT ''' WHERE ....')
RUNSQL &MYSQL
Allerdings ist ein QMQRY da wirklich komfortabler, da du hier wirklich nur die benötigten Parameter übergeben musst:
UPDATE MYFILE SET F1 = &P1 WHERE ...
-
die Variablen sind übrigens case sensitiv!
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
Danke für die schnellen Antworten. Ich muss dazusagen ich auf diesem ganzen Gebiet neu. Daher bräuchte ich vllt. noch einmal eine kurze Erläuterung ->Crashkurs ;-)
QMQRY sieht sehr interessant aus.
Verstehe ich das richtig:
Man erstellt da sozusagen eine Source vom Typ QMQRY.
In dieser sind die Parameter deklariert.
Dann habe ich das eigentliche PGM (Auch Typ QMQRY?!) indem ich mit strqmqry auf diese Source verweise und Parameter an die Variablen übergebe?
Und dann..?
Puuh ich glaube das ist noch etwas hoch, aber man wächst ja mit seinen Aufgaben...
Hat da jemand ein Beispiel evtl. auch mit Erläuterungen? Oder eine Seite auf dem das näher erläutert wird?
Grüße
MG
-
Per STRQM kommst du in das Menü zum Erstellen von QMQRY-Objekten.
Diese können (je nach Berechtigung) alle möglichen SQL's enthalten.
Ähnlich CLP können Variablen mit &NAME definiert werden. Vom Typ sind diese alle als Zeichenkette zu werten und können maximal 54 Zeichen aufnehmen.
Per STRQMQRY kann per SETVAR dann jeder Variablen ein Wert zugewiesen werden.
Zu beachten hierbei ist, dass Zeichenketten in Hochkommata übergeben werden müssen.
Man kann also keine Variable per '&NAME' verwenden da dies eine Konstante ist.
Enthält der QMQRY einen "Select" können die Daten auch in eine Ausgabedatei erstellt werden, ansonsten werden Sie zur Ansicht gebracht.
Da STRQMQRY ein CMD ist, kann es also nur per CLP, QCMDEXC oder REXX ausgeführt werden.
-
Alles klar, vielen Dank. Mit den Tipps bin ich heute morgen schon ein gutes Stück weitergekommen.
Leider läuft mein Programm noch auf einen Fehler (SQL Fehler).
Da das "manuelle" ausführen der SQL Abfrage im QueryManager funktioniert, vermute ich es liegt am übergeben der Werte.
Beispiel:
PGM PARM (&MDC)
...
...setvar(MDC &MDC)
Aufruf des PGM's: CALL PGM(BIB/PGM) PARM('45B%') --> (Im SQL Statement ist eine LIKE Abfrage)
Dann kommt folgender SQL -103 Fehler:
Ursache . . . . : SQLCODE hat den Wert -103. SQLSTATE hat den Wert 42604.
Der DB2 für i5/OS SQL-Nachrichtentext für diesen Fehler lautet: Numerische
Konstante 45B ungültig.
In meinem SQL steht ganz normale ....where Spalte LIKE &MDC.... --> Das sollte ja eig passen
Wie kann ich diesen Fehler noch beheben?
-
Wie ich schon sagte, Textkonstanten sind in HOCHKOMMA zu übergeben:
DCL &MDCX *CHAR(wie MDC + 2)
CHGVAR &MDCX ('''' *CAT &MDC *TCAT '''')
Beachte: die 4 Hockommas stellen 1 Hochkomma zur Verfügung!
SETVAR((MDC &MDCX))
-
Läuft jetzt alles, vielen Dank für die vielen Rückmeldung.
Zwei letzte Verständnisfrage hätte ich noch:
Welche Funktionen haben *CAT und *TCAT etc.?
Ich habe da im Netz nichts gefunden und logisch nachvollziehen kann ich den Unterschied auch nicht wirklich.
Außerdem, warum entsprechen ausgerechnet 4 Hochkamma genau einem Hochkomma welches übergeben wird?
Grüße
_MG_
-
"CAT" steht für "concatenate" und heißt "zusammenfügen".
Das "T" steht für "trailing" und heißt, dass die Blanks des Feldes links von TCAT entfernt werden.
(es gibt auch ein BCAT, B für Beginning, das schneidet BLanks rechts weg.)
In CL kann man auch !< für TCAT und !> für BCAT verwenden, da zeigt die Spitze des Stanitzels in die Richtung, wo die Blanks entfernt werden.
Und die 4 auf 1 sind auch recht leicht erklärt: Damit innerhalb eines Strings 1 Hochkomma erhalten bleibt, muss man 2 angeben. Diese Zeichenfolge steht nun selber unter Hochkomma = 4 Hochkommas.
-
*CAT / *BCAT / *TCAT (B=Blank und T=Truncate)
Command delimiters > Because an apostrophe inside a quoted string is paired with the opening apostrophe (delimiter) and is interpreted as the ending delimiter, an apostrophe inside a quoted string must be specified as two apostrophes. A pair of adjacent apostrophes used this way is counted as a single character.
Similar Threads
-
By NEWSolutions Redaktion in forum NEWSolutions artikel
Antworten: 0
Letzter Beitrag: 28-01-15, 19:31
-
By Klaus in forum NEWSboard Server Software
Antworten: 0
Letzter Beitrag: 20-04-02, 18:37
-
By hs in forum IBM i Hauptforum
Antworten: 14
Letzter Beitrag: 09-10-01, 12:06
-
By KB in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 02-08-01, 09:46
Tags for this Thread
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