我在 pl/sql 函数中有一个 for 循环,例如:
FOR i IN min..max LOOP
变量 i, min, max 被声明为NUMERIC
在我的情况下,最小值和最大值通常非常大,但范围本身很小,即:
min = 3232236033
max = 3232236286
如您所见,范围约为 ~256,但使用此值,oracle 会引发数字溢出错误,我坚持如何让它工作。
我应该如何迭代这些值?
编辑
好的,我有一个可行的答案,使用 max/min diff 循环,但是真的不可能循环遍历 oracle 中的大值吗?
编辑我检索到的错误是:
SQL Error: ORA-01426: nadmiar numeryczny
ORA-06512: przy "PS.DHCP", linia 88
01426. 00000 - "numeric overflow"
*Cause: Evaluation of an value expression causes an overflow/underflow.
*Action: Reduce the operands.
第88行代码是:
FOR client_ip IN min_host..max_host
min_host、max_host、client_ip 是inet_aton
(IP 的数字表示)的结果