タイガー!タイガー!じれったいぞー!(SE編)

AS400, Java, JavaEE, JSF等の開発、習慣など。日々の気づきをまとめたブログ(備忘録)

SQL

【AS400】SQL更新を含むストアド・プロシージャ

今週、久しぶりにAS400でストアド・プロシージャを定義しました。 これまでは、シンプルRPGLEをストアド化するばかりでしたが、今回はSQLRPGLEをストアド化してみたのです。 そこでの学びをまとめておきます。 まず、今回発生したエラーについてのJOBJOGの中…

「A5:SQL Mk-2」に感謝!

もう、何年も愛用させていただいている「A5:SQL Mk-2」。 a5m2.mmatsubara.com 用途は、ほとんどが「SQL→EXCEL発行」なのですが、データ集計やアプリケーションのテスト時などで、「これでもか!」というほど使い倒しております。 1日1回は、使っています…

【DB2 for i】「A5:SQL Mk-2」のSQLパラメータで数値を使いたい

久しぶりに、DB2 for i ネタになります。 A5:SQL Mk-2とは? 最高のSQLクライアントツールに、「A5:SQL Mk-2」というものがございます。 a5m2.mmatsubara.com ODBCドライバーを経由して、DB2 for iの操作も可能! ホント、軽量でして、毎日愛用させていただ…

【SQL】UNION ALLした統合結果をさらにグループ化する

業務の中で、下記のような集計処理を行う機会があり、 少しハマってしまったので、公開しておきます。 ちなみにRDBは、DB2 for IBM i (V7R3M0) になります。 やりたいことは、テーブルAを集計した結果とテーブルBを集計した結果を統合したものを さらにグル…

【SQL】UPDATE命令で項目をまとめて更新する

久しぶりにSQLネタです。 SQLは「基本的なことができればOK!」と思っています。 その理由は、SQLを極めれば何でもできてしまうので、気を抜くと確実に「スパゲティSQL」を増殖してしまう恐れがあるから。 しかしながら、時々「こんなことができないかなぁ~…

【AS400】スキーマ変更した後、Viewはどうなるか?

概要 前回の続きです。 tigertaizo.hatenablog.com テーマは「スキーマ変更した後、Viewはどうなるか?」です。 DB2 for iでの動作確認 前回同様、実際に「手を動かして試す」ことにしました。 検証用テーブルの準備 今回は「果物テーブル」を作ってみました…

【AS400】ビューの検証

概要 ビューとは? DB2 for iでの動作確認 事前準備 ビューの作成 ビューの調査 ビューを使用する ビューSQLの確認 ビューの書き込みテスト DSPDBRコマンドで確認 WRKOBJコマンドで確認 マテリアライズドビュー まとめ 概要 今回、RDBのビューを検証すること…

【SQL】ORDER BY句でオリジナルの順番でソートする方法

SQL

完全に自分用の備忘録です。 先日、SQL の ORDER BY句で、オリジナルの順序で並べたい機会がありました。 そもそも、そういう機会があることがイレギュラーだとわかってはいるのですが、やりたいものは仕方ありません。 すると、チーム・メンバーが、下記の…

【AS400】SQLRPGLE-ワークファイルを使った照合プログラム例

久しぶりのAS400のネタです。 業務上で、テーブル1とテーブル2の集計結果を照合して「金額などが合致しているか?」を確認したいケースがたまにあります。 シンプルなテーブル構成であれば、SQL文1本で照合できるのですが、複数のテーブルを参照したり、…

【AS400】SQLRPGLE-挿入、更新、削除件数を取得する

久しぶりにAS400のSQLRPGLEネタです。 SQLのINSERT文、UPDATE文、DELETE文実行後に、どうやって結果レコード数を取得するのか? という疑問が湧きました。 Javaであれば、下記のようにSQL実行結果の戻り値で結果レコード件数を取得できるのですが・・・。 in…

【AS400】QRYプログラムからSQL文を生成する方法

昨日、同僚から教えていただいたネタをひとつご紹介します。 私は、知らない機能だったので、衝撃でした。 SQLがよくわかっていなかった10年前に知りたかった機能でしたよ!!! と、こぼしていても始まらないので、さっそく試してみました。 QRYプログラム…

【DB2/400】DB側のシステム日付を取得する

「DB2/400」という呼び方が、古いものかもしれません。今なら、「DB2 for i」なのでしょう。 DB2 for iをAP Server等のリモートで操作する場合、DB側のシステム時間を使う必要があったので、サンプルを書いてみました。 参考にさせていただいたサイトは、こ…

【AS400】SQLRPGLE-リモートAS400へのアクセス

AS400が複数台存在する場合に、リモートのRDBSへアクセスすることが可能です。 簡単ですが、その方法をまとめます。 準備作業 (1) ローカル:遠隔RDBの登録 WRKRDBDIREコマンドでリモートAS400のRDBを登録します。 リレーショナル・データベース・ディレクトリー 項目の処理 位…

【AS400】SQLRPGLE-カーソルを使った集計処理

SQLカーソル処理にて、集計処理させるプログラムについてです。 はっきり言って、SQLは超・便利です。 CRUD処理はもちろん、複雑な照会であっても、副問い合わせなどで簡単にデータの取り出しが可能です。 ただ、複雑なSQL文は、解読するのに一苦労します(…

【AS400】SQLRPGLE-RPGでSQL文を使う

RPGにてシンプルなSQL文を書く機会があったので、簡単なサンプルを書いてみました。 SQLRPGLEサンプル D MAIN PR EXTPGM('SAMPLE28') D 7P 0 D* D MAIN PI D P@QCNT 7P 0 D* D C@QCNT S 7P 0 D* D******************************************************* D…

【AS400】SQL-ストアドプロシージャ

ストアドプロシージャとは? ストアドプロシージャ (stored procedure) とは、データベースに対する一連の処理をまとめた手続きにして、リレーショナルデータベース管理システムに保存(永続化)したものです。 ストアドプロシージャの作成(プログラム呼出…

【AS400】SQL-フィールドの部分選択、部分更新

概要 AS400のDB2/400というDBは、容易にフィールドを追加したり、変更したりするのが非常に面倒なように思います。なので、現行のテーブルには予備フィールドがあったりするわけですが、現在では桁区切り指定で使用していたりします。(予備フィールドの3〜…