-- å称テーブル æ›´æ–° -- DROP FUNCTION f_name_update(kubun int4, code int4, _name "varchar", _namediv "varchar", disp int4, upduser "varchar", pc "varchar", count int4); CREATE OR REPLACE FUNCTION f_name_update( kubun integer, code integer, _name character varying, _namediv integer, 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 _namediv IS NULL THEN RAISE EXCEPTION '引数 namediv ã¯å¿…é ˆã§ã™'; 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; IF s_check_upd(upduser, pc) = FALSE THEN RAISE EXCEPTION '引数 upduser&pc ãŒä¸æ£ã§ã™'; END IF; END IF; -- 更新カウンタãƒã‚§ãƒƒã‚¯ IF kubun IN (2,3) THEN SELECT updcnt INTO cntcheck FROM t_name WHERE namediv = _namediv AND namecd = code; IF NOT FOUND OR cntcheck <> count THEN RETURN -11; END IF; END IF; -- -- æ›´æ–°å‡¦ç† -- -- è¿½åŠ IF kubun = 1 THEN INSERT INTO t_name(namediv, namecd, name, disppriority, updusrnm, updpcnm) VALUES(_namediv, code, _name, disp, upduser, pc); -- æ›´æ–° ELSIF kubun = 2 THEN UPDATE t_name SET name = _name, disppriority = disp, updusrnm = upduser, updpcnm = pc WHERE namediv = _namediv AND namecd = code; -- 削除 ELSIF kubun = 3 THEN DELETE FROM t_name WHERE namediv = _namediv AND namecd = code; END IF; RETURN 1; END; $$ LANGUAGE 'plpgsql' VOLATILE;