【发布时间】:2020-12-20 04:49:37
【问题描述】:
我定义了一个程序,将一个公式(类型值字符串)解析为一个数值: 公式中的某些 case 值可以执行或引发错误数字溢出。 代码:
DECLARE
formula VARCHAR2(1000) := '1111111111 * 2';
val NUMBER;
BEGIN
EXECUTE IMMEDIATE 'BEGIN :res := '||formula||'; END;' USING OUT val;
DBMS_OUTPUT.PUT_LINE ( 'formula = ' || formula );
DBMS_OUTPUT.PUT_LINE ( 'val = ' || val );
END;
在这种情况下,然后引发错误数字溢出。当我增加值操作数多于/少于 10 个字符 1 时,它可以正常工作。
如果公式中的值包含数字 1,我会尝试检查一些值并查看大部分错误。 是这个原因吗?
谢谢大家!
【问题讨论】:
标签: oracle numeric execute-immediate