CREATE OR REPLACE FUNCTION f_recommend_update( IN integer, IN integer, IN date, IN date, IN integer, IN character varying, IN character varying, IN integer, OUT errcd integer, OUT errmsg character varying, OUT code integer) AS $$ DECLARE kubun ALIAS FOR $1; -- 処ç†åŒºåˆ† i_itemcd ALIAS FOR $2; -- ニュースコード i_startdate ALIAS FOR $3; -- ãŠå‹§ã‚é–‹å§‹æ—¥ i_closedate ALIAS FOR $4; -- ãŠå‹§ã‚終了日 i_priority ALIAS FOR $5; -- ãŠå‹§ã‚度 i_updusrnm ALIAS FOR $6; -- 更新ユーザ i_updpcnm ALIAS FOR $7; -- 更新マシン(IPアドレス) i_updcnt ALIAS FOR $8; cntcheck integer; nowdate timestamp; newupdcnt integer; BEGIN -- å¿…é ˆãƒã‚§ãƒƒã‚¯ IF kubun IS NULL OR kubun NOT IN (1,2,3) THEN RAISE EXCEPTION '処ç†åŒºåˆ†ãŒä¸æ£ã§ã™'; END IF; IF i_itemcd IS NULL THEN RAISE EXCEPTION 'アイテムコードã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; IF kubun IN (2,3) THEN IF i_updcnt IS NULL THEN RAISE EXCEPTION '更新カウンタã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; END IF; IF kubun IN (1,2) THEN IF i_startdate IS NULL THEN RAISE EXCEPTION 'ãŠå‹§ã‚é–‹å§‹æ—¥ã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; IF i_startdate IS NULL THEN RAISE EXCEPTION 'ãŠå‹§ã‚終了日ã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; IF i_priority IS NULL THEN RAISE EXCEPTION 'ãŠå‹§ã‚度ã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; IF i_updusrnm IS NULL THEN RAISE EXCEPTION '更新ユーザーã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; IF i_updpcnm IS NULL THEN RAISE EXCEPTION '更新マシンã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; END IF; -- å˜åœ¨ãƒã‚§ãƒƒã‚¯ IF kubun = 1 THEN SELECT itemcd INTO cntcheck FROM t_item_basic_attr WHERE itemcd = i_itemcd; IF NOT FOUND THEN RAISE EXCEPTION 'アイテムコードã¯å˜åœ¨ã—ã¾ã›ã‚“'; END IF; SELECT itemcd INTO cntcheck FROM t_recommend WHERE itemcd = i_itemcd; IF FOUND THEN RAISE EXCEPTION 'ãŠå‹§ã‚商å“ã¨ã—ã¦ã™ã§ã«ç™»éŒ²ã•れã¦ã„ã¾ã™'; END IF; ELSIF kubun IN (2,3) THEN SELECT itemcd INTO cntcheck FROM t_recommend WHERE itemcd = i_itemcd; IF NOT FOUND THEN RAISE EXCEPTION 'アイテムコードã¯å˜åœ¨ã—ã¾ã›ã‚“'; END IF; END IF; -- 更新カウンタãƒã‚§ãƒƒã‚¯ IF kubun IN (2,3) THEN SELECT updcnt INTO cntcheck FROM t_recommend WHERE itemcd = i_itemcd; IF NOT FOUND OR cntcheck <> i_updcnt THEN errcd := -11; errmsg := '更新カウンタãŒä¸æ£'; RETURN; END IF; END IF; ---ã€€æ›´æ–°å‡¦ç† --- nowdate := 'now'; -- ç¾åœ¨ã®æ—¥æ™‚ã‚’å–å¾— IF kubun IN (2,3) THEN newupdcnt := i_updcnt+1; -- 更新カウントを進ã‚ã‚‹ END IF; -- è¿½åŠ IF kubun = 1 THEN INSERT INTO t_recommend ( itemcd, startdate, closedate, priority, delflg, adddate, upddate, updusrnm, updpcnm, updcnt) VALUES( i_itemcd, i_startdate, i_closedate, i_priority, FALSE, nowdate, nowdate, i_updusrnm, i_updpcnm, 0); -- æ›´æ–° ELSIF kubun = 2 THEN UPDATE t_recommend SET startdate = i_startdate, closedate = i_closedate, priority = i_priority, upddate = nowdate, updusrnm = i_updusrnm, updpcnm = i_updpcnm, updcnt = newupdcnt, delflg = FALSE WHERE itemcd = i_itemcd; -- 削除 ELSIF kubun = 3 THEN UPDATE t_recommend SET delflg = TRUE, upddate = nowdate, updusrnm = i_updusrnm, updpcnm = i_updpcnm, updcnt = newupdcnt WHERE itemcd = i_itemcd; END IF; code := 1; END; $$ LANGUAGE 'plpgsql' VOLATILE;