View Full Version : Variables Einlesen von Spalten in sqlrpgle; Problem: "INTO"
Hallo zusammen,
zunächst einmal recht herzlichen Dank für eure Antworten und eure Mühe.
Deshalb noch mal: was willst du damit erreichen? Was ist deine Aufgabe?
Ich weiß nicht ob ich besser erklären kann :-) so wie es aussieht scheint andreaspr@aon.at (http://newsolutions.de/forum-systemi-as400-i5-iseries/members/1657-andreaspr-aon-at) den Punkt aber ganz gut zu treffen. Jedenfalls wenn ich den Code korrekt interpretiere.
Allerdings kommt bei mir bei vCount immer 0 heraus, hier mein Debug:
EDIT: Okay ein eingebettetes Bild war nicht so gut ihr findet es im Anhang^^
Hmm. Vielleicht sollte ich es doch in php machen...
407
Andreas kannst du mir noch sagen warum da bei mir eine 0 herauskommt? Die Tabelle ist in der Bibliothek definitiv vorhanden (Arbeite ich oft mit).
Vielen Dank euch
Besten Gruß
Matthias Neubert
andreaspr@aon.at
06-10-17, 08:32
Bei "With max 2" musst du sicher einen höheren Wert angeben.
Starte einfach mal den DEBUG und schau ins Joblog oder mit Monitoring.
In einem der beiden wirst du sicher den genauen Fehler finden können.
lg Andreas
Jo das sieht schon etwas besser aus.
Jetzt hat er nur noch ein Problem mit den Variablen.
Das ist das was mir der JOBLOG ausgibt aber ich weiß nicht so genau was der mir sagen möchte .
408
Meine Variablen habe ich wie folgt definiert:
dcl-s vsql varchar(512);
dcl-s vtype varchar(10);
dcl-s vlength int(10);
dcl-s vresult_ind int(10);
dcl-s vCount int(10);
dcl-s i int(10);
dcl-s sp1 varchar(500);
dcl-s sp2 packed(20:10);
EDIT: Ich habe gerade gesehen, dass der Cursor weder geöffnet noch geschlossen wird. Das habe ich jetzt eingebaut aber die Variablen bleiben trotzdem leer. Eingefügt habe ich den Open nach der Deklaration des Cursors und geschlossen habe ich ihn nach dem endfor
... ihr seid euch schon darüber im klaren, dass man auf diese Weise nicht Satz für Satz lesen kann und zwischendurch andere Lese/Schreib Operationen durchführen kann?
andreaspr@aon.at
06-10-17, 10:28
Da ist mir doch eine Zeile ins Kommentar gerutscht, habs im Beispiel-Post korrigiert.
War die Zeile:
Exec Sql GET DESCRIPTOR 'mydesc' VALUE :i :vtype = TYPE, :vlength = LENGTH, :vresult_ind = INDICATOR;
@Dieter: Sicher kann man Satz für Satz einlesen:
Exec Sql Fetch c1 into sql descriptor 'mydesc';
Oder meinst du was anderes?
lg Andreas
andreaspr@aon.at
06-10-17, 10:29
Ich würde aber wirklich lieber mit PHP das ganze Lösen.
Das würde dir das Leben einfacher machen. :-)
Und wenn du firm mit Java bist, dann wäre hier Java die bessere Wahl, da du für PHP zusätzliche Laufzeitumgebungen benötigst.
Da inzwischen auch Node.JS für AS/400 native verfügbar ist, kann man hierüber sogar ohne Einsatz von Zendserver o.ä. direkte Web-Services zur Verfügung stellen.
Hoch flexibel, einfach und von (fast) allen Javaprogrammierern realisierbar.
Zusätzlich kann man bei Bedarf ebenso Programmaufrufe bestehender Anwendungsteile über SQL-Wrapper (Prozeduren und Funktionen) in Node.JS/Java-SQL einbinden.
Für das, was du da vorhast, kann man RPG nicht so einfach verwenden.
Und was Dieter meint ist:
Ein RPGLE kann auf diesem Wege nur einen Cursor aufmachen!
Oder du musst in dem RPGLE je Cursor einen eigenen Satz von Routinen schreiben und dich entscheiden, wieviele parallelel Zugriffe und verschiedene Tabellen du zulässt.
Mit einer OOP-Sprache hast du das Problem erst gar nicht.
Da inzwischen auch Node.JS für AS/400 native verfügbar ist, kann man hierüber sogar ohne Einsatz von Zendserver o.ä. direkte Web-Services zur Verfügung stellen.
Oh das wusste ich noch gar nicht. Ja bei php bräuchte man dann wieder einen Webserver. In der AS400 ist ja aber schon einer drin deswegen würde ich den lieber nutzen deshalb auch rpgle. Wenn aber Node.JS inzwischen auch darauf läuft dann sieht die Sache ja wieder gaaaanz anders aus :-)
Ich denke da werde ich mich mal in der Richtung etwas schlauer machen. Vielen Dank euch allen für eure Ideen, Tipps und Mühe die ihr euch gemacht habt.
Besten Gruß
Matthias Neubert
PS: Muss ich den Beitrag irgendwie schließen?
So sind wir hier halt;-).
Geschlossen wird hier nichts, es kann ja sein, dass in Jahren hier weiter diskutiert wird.
andreaspr@aon.at
06-10-17, 21:48
Oh das wusste ich noch gar nicht. Ja bei php bräuchte man dann wieder einen Webserver. In der AS400 ist ja aber schon einer drin deswegen würde ich den lieber nutzen deshalb auch rpgle.
Bei PHP wird auch ein Apache Webserver verwendet. Den Unterschied erkennt man nur beim genaueren Hinschauen.
NodeJS läuft zwar Native auf der IBM i, dieser ist jedoch nicht out-of-the-box im Apache Webserver integriert.
In meinen Schulungen zeige ich beide Welten und auch wie der NodeJS im Apache integriert wird.
Am Ende muss man entscheiden für welche Welt die meisten Skills vorhanden sind.