-- ウォッãƒãƒªã‚¹ãƒˆãƒ†ãƒ¼ãƒ–ル 変更 CREATE OR REPLACE FUNCTION f_watch_list_update( IN integer, IN integer, IN integer, IN integer, IN character varying, 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_watchlistcd ALIAS FOR $2; -- ウォッãƒãƒªã‚¹ãƒˆã‚³ãƒ¼ãƒ‰ i_usercd ALIAS FOR $3; -- 登録ユーザーコード i_itemcd ALIAS FOR $4; -- 商å“コード i_comment ALIAS FOR $5; -- コメント i_updusrnm ALIAS FOR $6; -- 更新ユーザーå i_updpcnm ALIAS FOR $7; -- 更新マシンå i_updcnt ALIAS FOR $8; -- UpdCnt 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_updusrnm IS NULL THEN RAISE EXCEPTION '更新ユーザーåã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; IF i_updpcnm IS NULL THEN RAISE EXCEPTION 'æ›´æ–°PCåã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; IF kubun IN (1,2) THEN IF i_usercd IS NULL THEN RAISE EXCEPTION 'ユーザーコードã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; IF i_itemcd IS NULL THEN RAISE EXCEPTION '商å“コードã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; END IF; IF kubun IN (2,3) THEN IF i_watchlistcd IS NULL THEN RAISE EXCEPTION 'ウォッãƒãƒªã‚¹ãƒˆã‚³ãƒ¼ãƒ‰ã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; IF i_updcnt IS NULL THEN RAISE EXCEPTION 'UpdCntã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; END IF; -- å˜åœ¨ãƒã‚§ãƒƒã‚¯ IF kubun IN (1,2) THEN SELECT itemcd INTO cntcheck FROM t_item_basic_attr WHERE itemcd = i_itemcd; IF NOT FOUND THEN RAISE EXCEPTION '商å“コードã¯å˜åœ¨ã—ã¾ã›ã‚“'; END IF; SELECT membercd INTO cntcheck FROM t_member_basic_attr WHERE membercd = i_usercd; IF NOT FOUND THEN RAISE EXCEPTION 'ユーザーコードã¯å˜åœ¨ã—ã¾ã›ã‚“'; END IF; END IF; IF kubun IN (2,3) THEN SELECT watchlistcd INTO cntcheck FROM t_watch_list WHERE watchlistcd = i_watchlistcd; IF NOT FOUND THEN RAISE EXCEPTION 'ウォッãƒãƒªã‚¹ãƒˆã‚³ãƒ¼ãƒ‰ã¯å˜åœ¨ã—ã¾ã›ã‚“'; END IF; END IF; -- 更新カウンタãƒã‚§ãƒƒã‚¯ IF kubun IN (2,3) THEN SELECT updcnt INTO cntcheck FROM t_watch_list WHERE watchlistcd = i_watchlistcd AND membercd = i_usercd; IF NOT FOUND OR cntcheck <> i_updcnt THEN errcd := -11; errmsg := '更新カウンタãŒä¸æ£'; RETURN; END IF; END IF; -- ã™ã§ã«ç™»éŒ²ã•れã¦ã„ãŸã‚‰è¿½åŠ ã—ãªã„ IF kubun = 1 THEN SELECT watchlistcd INTO cntcheck FROM t_watch_list WHERE itemcd = i_itemcd AND membercd = i_usercd AND delflg = FALSE; IF FOUND THEN code := 1; 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_watch_list ( membercd, itemcd, comment, createdate, delflg, adddate, upddate, updusrnm, updpcnm, updcnt) VALUES( i_usercd, i_itemcd, i_comment, nowdate, FALSE, nowdate, nowdate, i_updusrnm, i_updpcnm, 0); -- æ›´æ–° ELSIF kubun = 2 THEN UPDATE t_watch_list SET watchlistcd = i_watchlistcd, membercd = i_usercd, itemcd = i_itemcd, comment = i_comment, upddate = nowdate, updusrnm = i_updusrnm, updpcnm = i_updpcnm, updcnt = newupdcnt WHERE watchlistcd = i_watchlistcd; -- 削除 ELSIF kubun = 3 THEN UPDATE t_watch_list SET delflg = TRUE, upddate = nowdate, updusrnm = i_updusrnm, updpcnm = i_updpcnm, updcnt = newupdcnt WHERE watchlistcd = i_watchlistcd; END IF; code := 1; END; $$ LANGUAGE 'plpgsql' VOLATILE;