CREATE OR REPLACE FUNCTION f_deposit_update( IN kubun integer, -- 区分 IN _orderno integer, -- å—æ³¨No IN _depositdate date, -- 入金日 IN _depositdiv integer, -- 決済方法区分 IN _depositstate integer, -- ステータス IN _cardcompany varchar, -- カード会社 IN _cardnumber varchar, -- ã‚«ãƒ¼ãƒ‰ç•ªå· IN _cardname varchar, -- カードå IN _cardexp varchar, -- æœ‰åŠ¹æœŸé™ IN _shitennumberkey varchar, -- æ”¯åº—ç•ªå· IN _kouzanumberkey varchar, -- å£åº§ç•ªå· IN upduser varchar, IN pc varchar, IN count integer, OUT errcd integer, OUT errmsg varchar, OUT code integer) AS $BODY$ DECLARE cntcheck integer; BEGIN -- -- パラメータãƒã‚§ãƒƒã‚¯ -- -- 処ç†åŒºåˆ† IF kubun IS NULL OR kubun NOT IN (1,2,3) THEN RAISE EXCEPTION '処ç†åŒºåˆ†ãŒä¸æ£ã§ã™'; END IF; -- 更新カウンタãƒã‚§ãƒƒã‚¯ IF kubun IN (2,3) THEN SELECT updcnt INTO cntcheck FROM t_deposit WHERE orderno = _orderno; IF NOT FOUND OR cntcheck <> count THEN RAISE EXCEPTION '更新カウンタãŒä¸æ£ã§ã™'; END IF; END IF; IF kubun = 1 THEN -- å—æ³¨æ˜Žç´°è¿½åŠ insert into t_deposit ( orderno, depositdate, depositdiv, depositstate, cardcompany, cardnumber, cardname, cardexp, shitennumberkey, kouzanumberkey, updusrnm, updpcnm ) values ( _orderno, _depositdate, _depositdiv, _depositstate, _cardcompany, _cardnumber, _cardname, _cardexp, _shitennumberkey, _kouzanumberkey, upduser, pc ); errcd := 1; code := _orderno; errmsg := '完了'; RETURN; ELSIF kubun = 2 THEN -- å—æ³¨æ˜Žç´°å¤‰æ›´ UPDATE t_deposit SET depositdate = _depositdate, depositdiv = _depositdiv, depositstate = _depositstate, cardcompany = _cardcompany, cardnumber = _cardnumber, cardname = _cardname, cardexp = _cardexp, shitennumberkey = _shitennumberkey, kouzanumberkey = _kouzanumberkey, updusrnm = upduser, updpcnm = pc WHERE orderno = _orderno; errcd := 1; code := _orderno; errmsg := '完了'; RETURN; ELSIF kubun = 3 THEN -- å—æ³¨æ˜Žç´°å‰Šé™¤ UPDATE t_deposit SET delflg = TRUE, updusrnm = usr, updpcnm = pc WHERE orderno = _orderno; errcd := 1; code := _orderno; errmsg := '完了'; RETURN; END IF; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE;