PDA

View Full Version : Systembefehl aus SQL heraus



Seiten : [1] 2

Peet
28-05-13, 13:44
Hallo zusammen,

ich weiß, es geht bestimmt, aber wie ? :confused:

Ich möchte aus dem SQL heraus (aus RPG oder Net.Data) einen Systembefehl, z.b. CHGLIBL, absetzen bzw. durchführen lassen.

Kann mir jemand weiterhelfen ?

Vielen Dank im Voraus
Peet

Fuerchau
28-05-13, 13:49
Dafür gibts hier mehrere Beispiele mit QCMDEXC als SQL-Procedure:

CALL QCMDEXC ('MyCmd', 0000000005.00000)

Der numerische Ausdruck muss mit 10 Vorkomma und 5 Nachkommstellen genau die Länge des Kommandos enthalten.

Sind Hochkommata im Kommando enthalten, so sind diese zu verdoppeln, aber sie zählen nicht zur Länge dazu, da SQL diese wieder entfernt.

Peet
28-05-13, 13:58
Vielen Dank !

Gruß
Peet

B.Hauser
28-05-13, 17:46
Der numerische Ausdruck muss mit 10 Vorkomma und 5 Nachkommstellen genau die Länge des Kommandos enthalten.

Das war erforderlich, als QCMDEXC noch nicht als Stored Procedure registriert war (vor Release V5R4 wenn ich mich recht erinnere). Heute ist dies nicht mehr notwendig. Die Länge sollte allerdings stimmen.

Der folgende Aufruf wird ordnungsgemäß ausgeführt.


CALL QCMDEXC('Addlible Hauser', 15)


Birgitta

BenderD
28-05-13, 19:23
Das war erforderlich, als QCMDEXC noch nicht als Stored Procedure registriert war (vor Release V5R4 wenn ich mich recht erinnere). Heute ist dies nicht mehr notwendig. Die Länge sollte allerdings stimmen.

Der folgende Aufruf wird ordnungsgemäß ausgeführt.


CALL QCMCEXC('Addlible Hauser', 15)


Birgitta

... mitnichten und auch mitneffen Frau Oberlehrerin, da sind gleich mehrere Fehler, die den Erfolg vereiteln...

D*B

KM
29-05-13, 07:37
...und zwar welche (außer dem Tippfehler bei QCMDEXC)?

Anton Gombkötö
05-06-13, 13:53
Lieber Dieter,
hier bei mir funktioniert das auch.
Bitte erhelle uns, sage uns, warum es nicht gehen kann.
Hummeln können ja auch nicht fliegen. Gottseidank können sie auch nicht lesen. ;-)
Danke,
LG Toni

Robi
05-06-13, 14:15
Ich gebe Dieter recht.
Bei mir funktioniert ein "addlible Hauser" auch nicht.:p

Schließlich gibt es solch eine Lib auf den wenigsten AS/400 Systemen

Robi

Anton Gombkötö
05-06-13, 15:07
dass es keine Bibliothek Hauser gibt, und es diese Bibliothek wirklich nicht gibt, funktioniert das doch ordnungsgemäß?!
Ich vermute etwas intellektuell Anspruchsvolleres dahinter, schließlich ist es Dieter Bender, den verbinde ich eigentlich nicht mit Kinderkram... ;-)

B.Hauser
06-06-13, 06:20
Falls es irgendjemand interessieren sollte:
QCMDEXC wurde als externe Stored Procedure in der Bibliothek QSYS2 hinterlegt.
Die Stored Procedure hat 2 Parameter:
1. CL-Befehl - VarChar(32000)
2. Länge - 15,5
Intern wird QCMDEXC aufgerufen und ausgeführt!

Die Bibliothek QSYS2 ist im Systemteil der Bibliotheksliste hinterlegt und auch bei Verwendung von SQL Naming im Default Path, so dass ein unqualifizierter Aufruf erfolgen kann.

Dadurch, dass das Original-Programm als Stored Procedure registiert wurde, kann es auch nach den gleichen Regeln wie jede andere Stored Procedure aufgerufen werden, d.h. die Anzahl der Parameter muss stimmen und die Datentypen der Parameter müssen zur Definition kompatibel sein.

Wenn man natürlich QCMDEXC mit QSYS qualifiziert aufgerufen wird, funktioniert der Aufruf nicht, da an dieser Stelle das Original-Programm aufgerufen wird (und nicht die Stored Procedure!). In diesem Fall muss der zweite Parameter mit 10 Vorkomma- und 5 Nachkommastellen angegeben werden.

Birgitta