-- 商å“基本属性テーブル æ›´æ–° DROP FUNCTION f_item_basic_attr_update(IN kubun integer,IN _itemcd integer, IN _itemnm character varying,IN _itemnmkana character varying, IN _makercd integer,IN _itemexp character varying,IN _option01 character varying,IN _option02 character varying,IN _option03 character varying,IN _option04 character varying,IN _option05 character varying,IN _option06 character varying,IN _option07 character varying,IN _option08 character varying,IN _option09 character varying,IN _option10 character varying,IN upduser character varying,IN pc character varying,IN count integer,OUT errcd integer,OUT errmsg varchar,OUT code integer); CREATE OR REPLACE FUNCTION f_item_basic_attr_update( IN kubun integer, IN _itemcd integer, IN _itemnm character varying, IN _itemnmkana character varying, IN _makercd integer, IN _itemexp character varying, IN _option01 character varying, IN _option02 character varying, IN _option03 character varying, IN _option04 character varying, IN _option05 character varying, IN _option06 character varying, IN _option07 character varying, IN _option08 character varying, IN _option09 character varying, IN _option10 character varying, IN upduser character varying, IN pc character varying, IN count integer, OUT errcd integer, OUT errmsg varchar, OUT code 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 (2,3) THEN IF _itemcd IS NULL THEN RAISE EXCEPTION '引数 itemcd ã¯å¿…é ˆã§ã™'; END IF; IF count IS NULL THEN RAISE EXCEPTION '引数 count ã¯å¿…é ˆã§ã™'; END IF; END IF; IF kubun IN (1,2,3) THEN IF upduser IS NULL THEN RAISE EXCEPTION 'æ›´æ–°ãƒ¦ãƒ¼ã‚¶ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“'; END IF; END IF; -- æ¡æ•°ãƒã‚§ãƒƒã‚¯ IF kubun IN (1,2) THEN IF _itemnm IS NOT NULL THEN IF s_check_length(_itemnm, 256) = FALSE THEN RAISE EXCEPTION '引数 _itemnm ãŒä¸æ£ã§ã™'; END IF; END IF; IF _itemnmkana IS NOT NULL THEN IF s_check_length(_itemnmkana, 256) = FALSE THEN RAISE EXCEPTION '引数 _itemnmkana ãŒä¸æ£ã§ã™'; END IF; 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 (2,3) THEN SELECT updcnt INTO cntcheck FROM t_item_basic_attr WHERE itemcd = _itemcd; IF NOT FOUND OR cntcheck <> count THEN RAISE EXCEPTION '更新カウンタãŒä¸æ£ã§ã™'; END IF; END IF; --- æ›´æ–°å‡¦ç† --- -- è¿½åŠ IF kubun = 1 THEN INSERT INTO t_item_basic_attr( itemnm, itemnmkana, makercd, itemexp, option01, option02, option03, option04, option05, option06, option07, option08, option09, option10, updusrnm, updpcnm) VALUES( _itemnm, _itemnmkana, _makercd, _itemexp, _option01, _option02, _option03, _option04, _option05, _option06, _option07, _option08, _option09, _option10, upduser, pc); errcd := 1; code := lastval(); RETURN; -- æ›´æ–° ELSIF kubun = 2 THEN UPDATE t_item_basic_attr SET itemnm = _itemnm, itemnmkana = _itemnmkana, makercd = _makercd, itemexp = _itemexp, option01 = _option01, option02 = _option02, option03 = _option03, option04 = _option04, option05 = _option05, option06 = _option06, option07 = _option07, option08 = _option08, option09 = _option09, option10 = _option10, updusrnm = upduser, updpcnm = pc WHERE itemcd = _itemcd; errcd := 1; code := _itemcd; RETURN; --削除 ELSIF kubun =3 THEN SELECT itemcd INTO cntcheck FROM v_order_detail_list WHERE itemcd = _itemcd; IF FOUND THEN errcd := -11; errmsg := 'å—æ³¨ãƒ‡ãƒ¼ã‚¿ãŒå˜åœ¨ã™ã‚‹ã®ã§å‰Šé™¤ã§ãã¾ã›ã‚“'; RETURN; END IF; SELECT itemcd INTO cntcheck FROM t_ex_stock_detail WHERE itemcd = _itemcd AND stockstate <> 5 AND delflg = FALSE; IF FOUND THEN errcd := -11; errmsg := '在庫データãŒå˜åœ¨ã™ã‚‹ã®ã§å‰Šé™¤ã§ãã¾ã›ã‚“'; RETURN; END IF; UPDATE t_item_web_attr SET delflg = TRUE, updusrnm = upduser, updpcnm = pc WHERE itemcd = _itemcd; UPDATE t_item_struct SET delflg = TRUE, updusrnm = upduser, updpcnm = pc WHERE itemcd = _itemcd; UPDATE t_genre_item SET delflg = TRUE, updusrnm = upduser, updpcnm = pc WHERE itemcd = _itemcd; UPDATE t_item_basic_attr SET delflg = TRUE, updusrnm = upduser, updpcnm = pc WHERE itemcd = _itemcd; errcd := 1; code := _itemcd; RETURN; END IF; END; $$ LANGUAGE 'plpgsql' VOLATILE;