SQL ストアードプロシージャ

これをマスター

マスター ストアードプロシージャですっきり化

テーマ

ストアードプロシージャで複数作業をまとめよう
 
 
テーブル: sales
 取引ID取引日店舗ID商品ID個数合計金額
174/1/203521250
2114/1/203272700
3194/5/203462400
4324/11/204232360
5334/16/204341245
6394/21/204321300
7505/1/205492600
8535/1/205601375
9595/11/205512600
10625/21/205492600

はじめに

(ストアード)プロシージャは
複数のクエリーをまとめて一つの関数にまとめる機能です

複数のクエリを何回も実行すればよいのではと思われるかもなので
なぜ便利かを少しお話します

初期のアナライシスでは
単発のクエリを実行して
結果はExcelにコピーして、のような調査を行わう事が多いと思います

次第にデータベースのしくみが出来上がっていって
探したいデータの種類やレポートが細かくなっていき
レポートの頻度も増えてくると
Excelにコピーして作業する手間と時間がムダになってきます


そういった場合

ストアドプロシージャで複数クエリをまとめる事で
最初のクエリで得た結果を次のクエリに渡して
それをさらに集計して
のような一連の作業をひとまとめにすることが出来ます

数十、数百行あるクエリを何度も繰り返し行うケースも出てくるかもなので
クエリのコードをすっきりまとめられるメリットもあります

で実行できます

詳しく

ストアドプロシージャの作成

CREATE PROCEDURE プロシージャ名 (パラメター タイプ, パラメター タイプ …)
BEGIN

    一連のクエリ

END

CREATE PROCEDURE プロシージャ名 (パラメター パラメタータイプ, パラメター パラメタータイプ …)

プロシージャ名(スペースは入れず1語で)はお好きな名前をつけられます
パラメターは任意で必要ならば指定できます

CREATE PROCEDURE daily( startDate AS date, endDate AS date)

のような感じにパラメターのデータタイプをつけて指定します

ストアドプロシージャの実行

EXEC ストアドプロシージャ名

実行はいたってシンプルで

EXEC のあとにプロシージャ名を指定するだけです

実践

通常ストアドプロシージャは
ジョブと呼ばれる決まった時間に定期的に実行する
データベースの機能で実行する事で

たとえば
深夜0時にデータの取得をして
深夜1時にレポートを作成して
終日の午後11時にデータをクリアにする
のような使われ方もします

あわせてご覧ください