Wie kann ich programmatisch eine komplexe Abfrage ausführen, die auf einer as400?

Ich bin neu bei arbeiten auf einer as400 und ich habe eine Abfrage, die joins über 4 Tabellen. Die Abfrage selbst ist in Ordnung, es läuft in STRSQL und zeigt die Ergebnisse an.

Was ich bin, zu kämpfen, ist immer die Abfrage ausführen zu können programmgesteuert (es wird schließlich ausgeführt werden, von einer geplanten CL-Skript).

Ich versucht haben, erstellen Sie eine physische Datei, die die Abfrage enthält, läuft es mit RUNQRY, aber es zeigt einfach die Abfrage selbst, nicht das tatsächliche Ergebnis eingestellt.

Weiß jemand, was ich falsch mache?


UPDATE

Danke an alle für die Richtung und die Ressourcen, mit Ihnen war ich in der Lage, mein Ziel zu erreichen. Falls es hilft jemand, das ist, was ich am Ende tun (dies alles geschah in der eigenen Bibliothek ZUORDNEN):

  1. Erstellt eine physische Quell-Datei (mit CRTSRCPF): QSQLSRC, und erstellt ein Element mit dem Namen SQLLEAGSEA, mit der Art von TXT -, enthält die SQL-Anweisung.

  2. Erstellt eine andere physische Quell-Datei: QCLSRC, und erstellt ein Element mit dem Namen POPLEAGSEA, mit der Art der CLP-Verordnung, dass änderungen der aktuellen Bibliothek zu RESERVIEREN, dann läuft die Abfrage mit RUNSQLSTM (mehr Details dazu weiter unten). Hier ist der eigentliche Befehl:

    RUNSQLSTM SRCFILE(QSQLSRC) SRCMBR(SQLLEAGSEA) COMMIT(*NONE) BENENNUNG(*SYS)

  3. Hinzugefügt CLP-geplante Aufträge (mit ADDJOBSCDE), den folgenden Befehl ausführen:

CALL PGM(ZUORDNEN/POPLEAGSEA)

Hinsichtlich RUNSQLSTM, meine Forschung zeigte, dass ich war nicht in der Lage sein, um diese Funktion zu verwenden, weil es nicht die Unterstützung von SELECT-Anweisungen. Was ich nicht deuten, meine Frage war, was ich brauchte, um zu tun, mit dem Ergebnis - ich werde einfügen und die daraus resultierenden Daten in eine andere Tabelle (hatte ich getan, dass ich bin sicher, die helfen könnten, haben herausgefunden, dass aus viel schneller). So effektiv, ich wollte nicht zu tun, WÄHLEN Sie eine, mein Ergebnis ist tatsächlich ein INSERT. Also meine SQL-Anweisung (in SQLLEAGSEA) beginnt mit:

INSERT INTO
ZUORDNEN/LEAGSEAS

WÄHLEN
...
BLA BLA BLA
...

Aus meinen Recherchen entnehme ich, dass RUNSQLSTM nicht unterstützt, WÄHLEN Sie, weil es nicht mit einem Mechanismus zu tun, nichts mit den Ergebnissen. Sobald ich nicht mehr die Einnahme von baby-Schritte und erkannte, dass ich brauchte, um die SELECT-UND INSERT in die gleiche Anweisung, es löste mein Hauptproblem.

Nochmals vielen Dank an alle!

  • Ich würde hier beginnen, wenn Sie nicht schon dort gewesen. mcpressonline.com/sql/... viel Glück! Ich bin auch nur unwesentlich funktionale im AS400/iseries-ökosystem.
  • Ein Tipp für diejenigen, die neu auf der Plattform. Sie wahrscheinlich nicht verwenden Sie eine AS/400. IBM hat nicht verkauft eine AS/400 seit dem Jahr 2000. iSeries-und System i waren die Nachfolger-Systeme, aber die aktuelle hardware benannt ist einem IBM Power Systems mit POWER7+ - chips. IBM ' s Watson gespielt, Jeopardy! auf Power7-System-hardware. Das aktuelle Betriebssystem namens IBM i 7.1. Power Systems können auch mehrere Kopien von AIX -, Linux-und/oder IBM i, in der virtuelle Maschinen, sogenannte logical partions ("LPAR"s).
InformationsquelleAutor Jared | 2012-10-16
Schreibe einen Kommentar