IBM i (AS/400)でSQLを使って簡単にファイルって更新できるんですか?
Question
特定のファイルの一つの区分を全て更新したいのですが、SQLを使用すると簡単にできると先輩から聞きました。
実際には区分2に対してAAを埋込みたいと考え、以下のようにRPG/400でコーデイングしています。
SQLで更新する場合はどのような方法になりますでしょうか。


Answer
A. ST1(DB2 Query Manager and SQL Development Kit)という有償ライセンスをIBM i (AS/400)に導入していると、STRSQLコマンドを使って、
UPDATE LIBLARY/TEST01P SET T1KBN2 = 'AA'
で変更が出来てしまいます、ビックリするくらい、簡単ですね。
さらに、条件も付けることが出来ます。
例えは区分1が'02'の時に'AA'としたいのであれば、
UPDATE LIBLARY/TEST01P SET T1KBN2 = 'AA' WHERE T1KBN1 = 02
となります。
構文が解っている場合はSTRSQLの後にダイレクトに入力すればいいですけど、解らない場合はプロンプトを使って順に指定して試してみることも可能です。
コマンドプロンプトでSTRSQLと実行すると、SQL画面がでます。
スクロールすると、最後の33にUPDAEがあります。

33と入力して実行キーを押してください。

ファイルとライブラリーを指定して実行キーで画面を遷移させます。

区分2を'AA'にしたいのでT1KBN2に'AA'と指定をして実行キーを押します。
次に以下のWHEREを指定する画面が出ます。条件を付けないのであれば、実行キーを押して遷移します。
条件を付けたい場合はガイダンスに従ってF4を押してください。

その後、条件を付けるフィールドを選択します。

区分1のT1KBN1が'02'の特にセットしたいので、T1KBN1に'1'を入れて実行キーを押すと先ほどの画面に戻ります。
続けて = '02'と指定してください。

これで実行キーを押すと、構文の指定ミス等が無ければファイルが更新されて以下のようになります。(QUERYで確認しています)

意外と簡単ですね。
また、Access Client Solutions(ACS)からでも操作が可能です。
その場合は、「SQLスクリプトの実行」を選択してください。

以下の画面が出たらSQL文を入れて実行して試してみてください。

まずは、本番のデータでなく、テスト用に環境を作成し、テストデータに本番データをコピーして準備して試してください。
いきなり、構文を間違えて本番データを壊してからでは遅いので。。。。。。
(参考情報)
IBM DB2 Query Manager and SQL Development Kit for i commands
https://www.ibm.com/docs/ja/i/7.4?topic=ccbp-db2-query-manager-sql-development-kit-i-commands
by けやきのじぃじ