-- Function: f_access_increment(IN int4, IN date, IN "varchar", IN "varchar", OUT errcd int4, OUT errmsg "varchar") -- DROP FUNCTION f_access_increment(IN int4, IN date, IN "varchar", IN "varchar", OUT errcd int4, OUT errmsg "varchar"); CREATE OR REPLACE FUNCTION f_access_increment(IN int4, IN date, IN "varchar", IN "varchar", OUT errcd int4, OUT errmsg "varchar") AS $BODY$ DECLARE i_itemcd ALIAS FOR $1; -- å“ç›®C i_accessdate ALIAS FOR $2; -- アクセス日 i_updusrnm ALIAS FOR $3; -- 更新ユーザå i_updpcnm ALIAS FOR $4; -- 更新マシン i integer; cntcheck integer; BEGIN IF i_itemcd IS NULL THEN errmsg := 'å“ç›®ã‚³ãƒ¼ãƒ‰ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。'; errcd := -10; RETURN; END IF; IF i_accessdate IS NULL THEN errmsg := 'ã‚¢ã‚¯ã‚»ã‚¹æ—¥ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。'; errcd := -10; RETURN; END IF; IF i_updusrnm IS NULL THEN errmsg := '更新ユーザåãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。'; errcd := -10; RETURN; END IF; IF i_updpcnm IS NULL THEN errmsg := 'æ›´æ–°ãƒžã‚·ãƒ³ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“。'; errcd := -10; RETURN; END IF; -- 外部ã‚ーãƒã‚§ãƒƒã‚¯ -- SELECT itemcd INTO cntcheck FROM t_item_basic_attr WHERE itemcd = i_itemcd; IF NOT FOUND THEN errmsg := 'å“目基本属性テーブルã«å˜åœ¨ã—ãªã„å“目コード'; errcd := -10; RETURN; END IF; -- IPアドレスãƒã‚§ãƒƒã‚¯ -- SELECT itemcd INTO cntcheck FROM t_access WHERE itemcd = i_itemcd AND accessdate = i_accessdate AND updpcnm = i_updpcnm; IF FOUND THEN errmsg := 'å‰å›žã¨ipアドレスãŒåŒä¸€ã®ãŸã‚æ›´æ–°ã—ãªã„'; errcd := 1; RETURN; END IF; -- æ›´æ–°å‡¦ç† -- SELECT refercount INTO cntcheck FROM t_access WHERE itemcd = i_itemcd AND accessdate = i_accessdate; IF NOT FOUND THEN INSERT INTO t_access(itemcd, accessdate, refercount, updusrnm, updpcnm)VALUES(i_itemcd, i_accessdate, 1, i_updusrnm, i_updpcnm); errcd := 1; RETURN; ELSE UPDATE t_access set refercount = cntcheck+1, updusrnm = i_updusrnm, updpcnm = i_updpcnm WHERE itemcd = i_itemcd AND accessdate = i_accessdate; errcd := 1; RETURN; END IF; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE;