データベース千夜一夜第29回

ストアドプロシージャ(3)~関数の利用と条件判断 長谷川裕行
有限会社 手國堂

ストアドプロシージャはデータベース・エンジンを制御するためのプログラムですから、一般的なプログラミング言語と同じように関数を使ったり制御構造を記述したりできます。その構文規則は、Visual Basicでプロシージャを記述するより単純で簡単です。

このコラムをお読みのみなさんはプログラミング言語の基本をご存じだと思いますので、あまり初歩的な説明は省略し、SQL関数の利用とIf命令による条件判断・分岐について説明します。


サンプル・データベースとサンプル・アプリケーションの扱いについて
第9回以降、新しいサンプル・データベースを使っているのでご注意ください。新しいサンプル・データベースの登録方法については、第9回の記事から「新しいサンプルデータベースの準備」の項をお読みください。

なお、今回はテーブルの内容を書き換えるSQLを実行するため、テーブル「累積売上_fx」と同じ内容を持つ「累積売上_dmy」を使用します。現在のサンプルデータベースにこのテーブルが存在しない場合は、クエリマネージャで今回のサンプルに含まれているクエリファイル「累積売上_dmy新規作成.sql」を実行して作成してください。

既に「累積売上_dmy」が存在するものの、その内容が書き換えられていて「累積売上_fx」と同じでない場合は、同じく今回のサンプルに含まれているクエリファイル「累積売上_dmy削除・作成.sql」を実行してください。

また、本コラムで紹介しているストアドプロシージャを登録する際、Create Procedure命令を実行する前に、対象データベースに必ず“db1001ya”を選択しておいてください。ソースコード中のCreate Procedure命令の前に“Use db1001ya”の1行を挿入して、対象データベースを明示しても構いません。



- 目次 -
関数の利用
時間・期間の計算処理
現在の満年齢を求める
Returnで関数の戻り値を返す
ストアドプロシージャの実行
条件判断と分岐(1)~基本構造
結果によって戻り値を切り替える
If~Elseによる条件判断と分岐
プロシージャの実行
If~Elseの基本書式
条件判断と分岐(2)~複数行の実行
年次処理を手直しする
エラー時に処理を切り替える
メッセージを表示させる
Begin~Endによる処理ブロック
Begin~Endの入れ子構造
実行前の準備
プロシージャの実行
If~Elseの入れ子構造
あとがき
長谷川 裕行 (はせがわ ひろゆき)
有限会社 手國堂 代表取締役  http://www.hirop.com/

大阪芸術大学 写真学科講師。フリーライター。日経ソフトウェアなどに連載。
『ソフトウェアの20世紀』、『独習SQL』など著書多数。

Copyright © MESCIUS inc. All rights reserved.