Oracle1401和1438,oracle - ORA-01438:值大于此列允许的指定精度 - 堆栈内存溢出

以下是我的代码,我不明白我在做什么错。 任何帮助将不胜感激

CREATE OR REPLACE

PROCEDURE COMP_LATE_FEE(LATE_APT_FINE IN NUMBER, LATE_GRG_FINE IN NUMBER)

AS

DIFF NUMBER;

TYPE MBCUR IS REF CURSOR RETURN MONTHLY_BILL%ROWTYPE;

MONBILL MBCUR;

MBREC MONTHLY_BILL%ROWTYPE;

BEGIN

--DIFF := FLOOR(SYSDATE - (TRUNC(SYSDATE,'MM')));

--DBMS_OUTPUT.PUT_LINE(DIFF);

OPEN MONBILL FOR

-- checking the status of all last month's bills

SELECT * FROM MONTHLY_BILL

WHERE STATUS = 'PENDING' AND SYSDATE > ED_DT;

FETCH MONBILL INTO MBREC;

-- adding the late fee amount for any bills that are past the due date

-- due date = last day of the month

DIFF := FLOOR(ABS(MBREC.ED_DT - (TRUNC(SYSDATE,'MM'))));

UPDATE MONTHLY_BILL

SET LATE_FEE = DIFF * LATE_APT_FINE

WHERE BILL_NUM = MBREC.BILL_NUM;

-- if a garage is rented by the resident then the respective additional fee is included

IF (MBREC.GARAGE_RENT != 0) THEN

UPDATE MONTHLY_BILL

SET LATE_FEE = LATE_FEE + DIFF * LATE_GRG_FINE

WHERE BILL_NUM = MBREC.BILL_NUM;

END IF;

COMMIT;

CLOSE MONBILL;

END;

/

该程序编译无任何错误。 但是当我调用proc时出现以下错误

BEGIN

COMP_LATE_FEE(70,20);

END;

/

错误报告:

ORA-01438: value larger than specified precision allowed for this column

ORA-06512: at "LALLURI.COMP_LATE_FEE", line 19

ORA-06512: at line 2

01438. 00000 - "value larger than specified precision allowed for this column"

*Cause: When inserting or updating records, a numeric value was entered

that exceeded the precision defined for the column.

*Action: Enter a value that complies with the numeric column's precision,

or use the MODIFY option with the ALTER TABLE command to expand

the precision.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值