A5で実行してみる
下記のサイトを参考に
https://db.just4fun.biz/?PL/pgSQL%E3%81%A8%E3%81%AF%EF%BC%9F
・どの言語が使えるようになっているかを確認
select * from pg_language;
・作成済みのファンクションを調べる
SELECT * FROM pg_proc;
または
SELECT proname,prosrc FROM pg_proc WHERE proname = 'update_w_blnc_slip_mgt_hist'
prosrcの値が実行される内容
・ストアドプロシージャの作成
[ORACLE]
CREATE [ OR REPLACE ] PROCEDURE ストアドプロシージャ名 [ (引数名 データ型),... ] IS [ 変数名 データ型,... ] BEGIN 処理内容 END ;
例:
CREATE PROCEDURE pro_200 IS BEGIN SELECT DISTINCT KK.顧客名 FROM 受注表 JJ,顧客表 KK WHERE JJ.顧客コード = KK.顧客コード AND JJ.受注個数 >= 200 ; END ;
[PostgreSQL]
CREATE FUNCTION 関数名 ( [ 引数のデータ型,... ] ) RETURNS [ SETOF ] 返り値のデータ型 AS ' [ラベル] [ DECLARE 変数名 データ型 ... ] BEGIN 処理内容 END ; ' LANGUAGE 'sql' ;
例:
CREATE FUNCTION func_200() RETURNS SETOF CHAR(20) AS ' BEGIN SELECT DISTINCT KK.顧客名 FROM 受注表 JJ,顧客表 KK WHERE JJ.顧客コード = KK.顧客コード AND JJ.受注個数 >= 200 ; END ; ' LANGUAGE 'sql' ;
・ストアドプロシージャの実行と削除
<<ORACLE>>
BEGIN [ EXECUTE ] ストアドプロシージャ名 [(引数,...)] END ;
例:
BEGIN pro_200 END ;
参考URL
https://www.postgresql.jp/document/7.2/programmer/plpgsql.html
https://www.postgresql.jp/document/9.2/html/catalog-pg-proc.html
https://www.techscore.com/tech/sql/SQL13/13_02.html/
https://www.postgresql.jp/document/8.1/html/plpgsql-trigger.html