MADOCHAN BLOG

30代未経験でWEBエンジニアをめざしてます!!!!!



【DB】ストアドプロシージャとは

ストアドプロシージャとは

Oracleデータベースに格納されたプロシージャのこと。
ストアドは格納の意味を持つ。

プロシージャ(procedure)とは

「手続き」の意味を持つ。 プログラム内で複数の命令や処理などを1つにまとめて、外部から呼び出しできるようにしたもの。
つまりストアドプロシージャはデータベースに対する一連の命令や処理をまとめたもので、いろんなところから呼び出すことができる便利なもの!

PL/SQLパッケージ

ストアドプロシージャを機能別に分類してまとめたもの。

実際にプロシージャを作成してみる

MySQLを用いて作成しています。

例:pro_sample01というusersテーブルからデータをすべて抽出するプロシージャを作成

CREATE PROCEDURE pro_sample01()
SELECT * FROM users;

プロシージャを実行(呼び出す)

CALL pro_sample01();

引数を持つプロシージャ

例:pro_sample02というx, yを入力してxとyの合計を計算するプロシージャを作成

CREATE PROCEDURE pro_sample02(IN x INT,IN y INT)
SELECT
  x + y;

入力値はIN 変数名 型として表します。

プロシージャを実行(呼び出す)

CALL pro_sample02(2, 3);

例:pro_sample03という出力値3を@aに、出力値テストを@bに保存するプロシージャを作成する。

CREATE PROCEDURE pro_sample03(OUT a INT, OUT b VARCHAR(3))
SET a = 3, b = "テスト";

出力値はOUT 変数名 型として表します。

プロシージャを実行(呼び出す)

CALL pro_sample03(@a, @b);
SELECT @a, @b;

まとめ

このようにストアドプロシージャを使うと関数のように処理をまとめて、モジュール化できます。
便利!

参考サイト

ストアドプロシージャ - オラクル・Oracle PL/SQL 入門

ストアドプロシージャの基本的ななにか - Qiita