CREATE OR REPLACE FUNCTION f_news_update( IN integer, IN integer, IN date, IN character varying, IN character varying, 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_newscd ALIAS FOR $2; -- ニュースコード i_date ALIAS FOR $3; -- ãŠçŸ¥ã‚‰ã›æ—¥ i_title ALIAS FOR $4; -- タイトル i_body ALIAS FOR $5; -- 本文 i_releasediv ALIAS FOR $6; -- 公開区分 i_updusrnm ALIAS FOR $7; -- 更新ユーザ i_updpcnm ALIAS FOR $8; -- 更新マシン(IPアドレス) i_updcnt ALIAS FOR $9; cntcheck integer; nowdate timestamp; newupdcnt 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 i_newscd IS NULL THEN RAISE EXCEPTION 'ニュースコードã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; IF i_updcnt IS NULL THEN RAISE EXCEPTION '更新カウンタã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; END IF; IF kubun IN (1,2) THEN IF i_date IS NULL THEN RAISE EXCEPTION '公開日ã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; IF i_title IS NULL THEN RAISE EXCEPTION 'タイトルã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; IF i_body IS NULL THEN RAISE EXCEPTION '本文ã®å¼•æ•°ã¯å¿…é ˆã§ã™'; END IF; IF i_releasediv 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 IN (2,3) THEN SELECT newscd INTO cntcheck FROM t_news WHERE newscd = i_newscd; IF NOT FOUND THEN RAISE EXCEPTION 'ニュースコードã¯å˜åœ¨ã—ã¾ã›ã‚“'; END IF; END IF; -- 更新カウンタãƒã‚§ãƒƒã‚¯ IF kubun IN (2,3) THEN SELECT updcnt INTO cntcheck FROM t_news WHERE newscd = i_newscd; 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_news ( date, title, body, releasediv, delflg, adddate, upddate, updusrnm, updpcnm, updcnt) VALUES( i_date, i_title, i_body, i_releasediv, FALSE, nowdate, nowdate, i_updusrnm, i_updpcnm, 0); -- æ›´æ–° ELSIF kubun = 2 THEN UPDATE t_news SET date = i_date, title = i_title, body = i_body, releasediv = i_releasediv, upddate = nowdate, updusrnm = i_updusrnm, updpcnm = i_updusrnm, updcnt = newupdcnt WHERE newscd = i_newscd; -- 削除 ELSIF kubun = 3 THEN UPDATE t_news SET delflg = TRUE, upddate = nowdate, updusrnm = i_updusrnm, updpcnm = i_updpcnm, updcnt = newupdcnt WHERE newscd = i_newscd; END IF; code := 1; END; $$ LANGUAGE 'plpgsql' VOLATILE;