-- ジャンルテーブル æ›´æ–° -- DROP FUNCTION f_genre_update(kubun int4, code int4, name "varchar", disp int4, parent int4, upduser "varchar", pc "varchar", count int4); CREATE OR REPLACE FUNCTION f_genre_update( kubun integer, code integer, parent integer, name character varying, disp integer, upduser character varying, pc character varying, count integer) RETURNS integer 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(upduser, pc) = FALSE THEN RAISE EXCEPTION '引数 upduser&pc ãŒä¸æ£ã§ã™'; END IF; END IF; -- ジャンルå“ç›®ãƒã‚§ãƒƒã‚¯ IF kubun IN (3) THEN SELECT itemcd INTO cntcheck FROM t_genre_item WHERE genrecd = code AND delflg = false; IF FOUND THEN RETURN -10; END IF; END IF; -- 更新カウンタãƒã‚§ãƒƒã‚¯ IF kubun IN (2,3) THEN SELECT updcnt INTO cntcheck FROM t_genre WHERE genrecd = code; IF NOT FOUND OR cntcheck <> count THEN RETURN -11; END IF; END IF; -- -- æ›´æ–°å‡¦ç† -- -- è¿½åŠ IF kubun = 1 THEN INSERT INTO t_genre(genrenm, disppriority, parentcd, updusrnm, updpcnm) VALUES(name, disp, parent, upduser, pc); -- æ›´æ–° ELSIF kubun = 2 THEN UPDATE t_genre SET genrenm = name, disppriority = disp, parentcd = parent, updusrnm = upduser, updpcnm = pc WHERE genrecd = code; -- 削除 ELSIF kubun = 3 THEN UPDATE t_genre SET delflg = TRUE, updusrnm = upduser, updpcnm = pc WHERE genrecd = code OR parentcd = code; END IF; RETURN 1; END; $$ LANGUAGE 'plpgsql' VOLATILE;