私はas400での作業が初めてで、4つのテーブルを結合するクエリがあります。クエリ自体は問題なく、STRSQL で実行され、結果が表示されます。
私が苦労しているのは、クエリをプログラムで実行できるようにすることです (最終的には、スケジュールされた CL スクリプトから実行されます)。
RUNQRYで実行するクエリを含む物理ファイルを作成しようとしましたが、実際の結果セットではなく、クエリ自体を表示するだけです。
私が間違っていることを誰かが知っていますか?
アップデート
方向性とリソースを提供してくれた皆さんに感謝します。彼らのおかげで、目標を達成することができました。それが誰かを助ける場合、これは私がやったことです(これはすべて独自のライブラリALLOCATEで行われました):
ソース物理ファイル (CRTSRCPF を使用): QSQLSRC を作成し、SQL ステートメントを含む、タイプが TXT の SQLLEAGSEA という名前のメンバーを作成しました。
別のソース物理ファイル QCLSRC を作成し、タイプが CLP の POPLEAGSEA という名前のメンバーを作成しました。このメンバーは、現行ライブラリーを ALLOCATE に変更し、RUNSQLSTM を使用して照会を実行します (詳細は以下を参照)。実際のコマンドは次のとおりです。
RUNSQLSTM SRCFILE(QSQLSRC) SRCMBR(SQLLEAGSEA) COMMIT(*NONE) NAMING(*SYS)
次のコマンドを実行して、(ADDJOBSCDE を使用して) スケジュールされたジョブに CLP を追加しました。
CALL PGM(ALLOCATE/POPLEAGSEA)
RUNSQLSTM に関しては、調査の結果、SELECT ステートメントをサポートしていないため、この関数を使用できないことがわかりました。私が質問で示していなかったのは、結果に対して何をする必要があるかということでした.結果のデータを別のテーブルに挿入するつもりでした.より速く)。事実上、私は SELECT を実行するつもりはありませんでした。私の最終結果は、実際には INSERT です。したがって、私の SQL ステートメント (SQLLEAGSEA 内) は次のように始まります。
ALLOCATE/LEAGSEAS に挿入
選択...何とか何とか何とか...
私の調査によると、RUNSQLSTM は結果を処理するメカニズムがないため、SELECT をサポートしていません。赤ちゃんの一歩を踏み出すのをやめて、同じステートメントで SELECT と INSERT を実行する必要があることに気付いたとき、私の主な問題は解決しました。
みんなありがとう!