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