PostgreSQLストアドプロシージャ
結果を返すもの→ストアドプロファンクション(stored function)
結果を返さないもの→ストアドプロシージャ(stored procedure)
メリット
実行したいSQLをデータベースに登録(stored proceder)しておき、これを呼び出すことで、アプリケーションとデータベースの通信は1回で済む
デメリット
データベース毎に用意された専用のプログラミング言語を覚える必要がある
プログラムのデバッグがしづらい
pg_proc
pg_procカタログは関数とプロシージャに関する情報を格納しているテーブル
関数の操作
存在確認
code:sql
SELECT proname FROM pg_proc p JOIN pg_namespace n ON p.pronamespace = n.oid
WHERE n.nspname = 'public' AND p.proname like '%hoge%';
関数削除
DROP FUNCTION hoge();
/icons/hr.icon
CREATE OR REPLACE FUNCTION
基本文法
行末はC#やJavaと同じくセミコロンを使う。(例 SELECT * from HOGE ; )
代入は コロンとイコールを続けて書く(例 data := 12345)
DECLARE~BEGINの間に、プログラム中で使う変数の名前と型を定義する
BEGIN~ENDまでの間にプログラムを記述する。
引数で指定した変数もプログラム内で自由に使うことが出来る。
code:SQL
CREATE OR REPLACE FUNCTION 関数の名前(引数1 , 引数2 , 引数3 , ・・・) … ①
RETURNS 戻り値の型 AS … ②
$BODY$
declare
引数を宣言する部分 … ③
BEGIN
処理を書く部分 … ④
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;