-- レーベルテーブル更新 -- DROP FUNCTION f_label_update(kubun int4, mcode int4, lcode int4, name "varchar", kana "varchar", recdv int4, usr "varchar", pc "varchar", count int4); CREATE OR REPLACE FUNCTION f_label_update( kubun int4, -- 処ç†åŒºåˆ† mcode int4, -- メーカーコード lcode int4, -- レーベルコード name "varchar", -- レーベルå kana "varchar", -- レーベルã‹ãª recdv 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 recdv IS NULL THEN RAISE EXCEPTION '引数 recdv ã¯å¿…é ˆã§ã™'; END IF; END IF; IF kubun IN (2,3) THEN IF mcode IS NULL THEN RAISE EXCEPTION '引数 mcode ã¯å¿…é ˆã§ã™'; END IF; IF lcode IS NULL THEN RAISE EXCEPTION '引数 lcode ã¯å¿…é ˆã§ã™'; 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_length(kana, 256) = FALSE THEN RAISE EXCEPTION '引数 kana ãŒä¸æ£ã§ã™'; 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 (1,2) THEN SELECT makercd INTO cntcheck FROM t_maker WHERE makercd = mcode AND delflg = FALSE; IF NOT FOUND THEN RAISE EXCEPTION '引数 mcode ãŒå˜åœ¨ã—ã¾ã›ã‚“'; END IF; END IF; -- å“目基本属性ãƒã‚§ãƒƒã‚¯ IF kubun IN (3) THEN SELECT itemcd INTO cntcheck FROM t_item_basic_attr WHERE makercd = mcode AND labelcd = lcode AND delflg = false; IF FOUND THEN RETURN -10; END IF; END IF; -- 更新カウンタãƒã‚§ãƒƒã‚¯ IF kubun IN (2,3) THEN SELECT updcnt INTO cntcheck FROM t_label WHERE makercd = mcode AND labelcd = lcode; IF NOT FOUND OR cntcheck <> count THEN RETURN -11; END IF; END IF; -- -- æ›´æ–°å‡¦ç† -- -- è¿½åŠ IF kubun = 1 THEN INSERT INTO t_label(makercd, labelnm, labelnmkana, recommenddiv, updusrnm, updpcnm) VALUES(mcode, name, kana, recdv, usr, pc); -- æ›´æ–° ELSIF kubun = 2 THEN UPDATE t_label SET labelnm = name, labelnmkana = kana, recommenddiv = recdv, updusrnm = usr, updpcnm = pc WHERE makercd = mcode AND labelcd = lcode; -- 削除 ELSIF kubun = 3 THEN UPDATE t_label SET delflg = TRUE, updusrnm = usr, updpcnm = pc WHERE makercd = mcode AND labelcd = lcode; END IF; RETURN 1; END; $$ LANGUAGE 'plpgsql' VOLATILE;