-- ç·ã‚¿ã‚¤ãƒˆãƒ«æ•°ã‚’å–å¾—ã—æ›´æ–°ã™ã‚‹é–¢æ•° -- DROP FUNCTION f_upd_stockupddate (integer); CREATE OR REPLACE FUNCTION f_upd_stockupddate(integer) RETURNS integer AS $$ DECLARE _count integer; _timestamp timestamp; i integer; _daycount integer; _s varchar(4000); BEGIN -- 日時è¨å®š i := 0; -- 商å“ã®æ›´æ–°æ—¥æ™‚ã®æœ€æ–°æ—¥æ™‚ã‚’å–å¾— SELECT MAX (basic.stock_upddate) INTO _timestamp FROM t_item_basic_attr basic INNER JOIN t_item_web_attr web ON basic.itemcd = web.itemcd AND web.delflg = FALSE AND releasedate <= CURRENT_DATE WHERE basic.delflg=FALSE; LOOP -- DVDä»¶æ•°ãƒã‚§ãƒƒã‚¯ (ä¸å¤ã€åœ¨åº«æœ‰ï¼‰ _s := 'SELECT count(basic.itemcd) FROM t_item_basic_attr basic INNER JOIN t_item_web_attr web ON basic.itemcd = web.itemcd AND web.delflg = FALSE AND releasedate <= CURRENT_DATE WHERE basic.stock_upddate >= date \'' || _timestamp || '\' -' || i || ' AND basic.delflg=FALSE AND basic.oldlowprice > 0;'; EXECUTE _s INTO _count; -- 10件以上ã€$1+10æ—¥å‰ã¾ã§ IF 10 <= _count THEN EXIT; END IF; IF i >= ($1 + 10) THEN EXIT; END IF; -- 1æ—¥ãšã¤ i := i + 1; END LOOP; -- DVDã®æ›´æ–°æ—¥ã¨ç¾åœ¨æ—¥ã®å·®åˆ†ã‚’å–å¾— SELECT date_part('day', CURRENT_TIMESTAMP - _timestamp) INTO _daycount; UPDATE t_systeminfo SET dvd_stockupddate_before = _daycount+1 + i WHERE validflg IS TRUE; RAISE NOTICE 'stockupddate_before = % ', _daycount+1 + i; RETURN 1; END; $$ LANGUAGE plpgsql;