PL/pgSQl

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