-- DROP FUNCTION f_supplier_update(kubun int4, code int4, name "varchar", disp int4, usr "varchar", pc "varchar", count int4); CREATE OR REPLACE FUNCTION f_supplier_update( kubun int4, -- 処ç†åŒºåˆ† code int4, -- 仕入先コード name "varchar", -- 仕入先å disp int4, -- è¡¨ç¤ºé † usr "varchar", -- 更新ユーザ pc "varchar", -- æ›´æ–°PC count int4) -- 更新カウンタ RETURNS int4 AS $$ DECLARE cntcheck integer; BEGIN -- -- パラメータãƒã‚§ãƒƒã‚¯ -- -- 処ç†åŒºåˆ† IF kubun IS NULL OR kubun NOT IN (1,2,3) THEN RAISE EXCEPTION '処ç†åŒºåˆ†ãŒä¸æ£ã§ã™'; END IF; -- å¿…é ˆãƒã‚§ãƒƒã‚¯ IF kubun IN (1,2) THEN IF disp IS NULL THEN RAISE EXCEPTION '引数 disp ã¯å¿…é ˆã§ã™'; END IF; END IF; IF kubun IN (2,3) THEN IF code IS NULL THEN RAISE EXCEPTION '引数 code ã¯å¿…é ˆã§ã™'; END IF; IF count IS NULL THEN RAISE EXCEPTION '引数 count ã¯å¿…é ˆã§ã™'; END IF; END IF; -- æ¡æ•°ãƒã‚§ãƒƒã‚¯ IF kubun IN (1,2) THEN IF s_check_length(name, 256) = FALSE THEN RAISE EXCEPTION '引数 name ãŒä¸æ£ã§ã™'; END IF; END IF; IF kubun IN (1,2,3) THEN IF s_check_upd(usr, pc) = FALSE THEN RAISE EXCEPTION '引数 usr&pc ãŒä¸æ£ã§ã™'; END IF; END IF; -- 更新カウンタãƒã‚§ãƒƒã‚¯ IF kubun IN (2,3) THEN SELECT updcnt INTO cntcheck FROM t_supplier WHERE suppliercd = code; IF NOT FOUND OR cntcheck <> count THEN RETURN -11; END IF; END IF; -- -- æ›´æ–°å‡¦ç† -- -- è¿½åŠ IF kubun = 1 THEN INSERT INTO t_supplier(suppliernm, disppriority, updusrnm, updpcnm) VALUES(name, disp, usr, pc); -- æ›´æ–° ELSIF kubun = 2 THEN UPDATE t_supplier SET suppliernm = name, disppriority = disp, updusrnm = usr, updpcnm = pc WHERE suppliercd = code; -- 削除 ELSIF kubun = 3 THEN UPDATE t_supplier SET delflg = TRUE, updusrnm = usr, updpcnm = pc WHERE suppliercd = code; END IF; RETURN 1; END; $$ LANGUAGE 'plpgsql' VOLATILE;