pl/sql 関数に次のような for ループがあります。
FOR i IN min..max LOOP
変数 i、min、max は次のように宣言されます。NUMERIC
私の場合、最小値と最大値はしばしば非常に大きくなりますが、範囲自体は小さいです。つまり:
min = 3232236033
max = 3232236286
ご覧のとおり、範囲は約 256 ですが、この値を使用するとオラクルは数値オーバーフロー エラーをスローし、それを機能させる方法に固執しました。
これらの値をどのように反復処理する必要がありますか?
編集
OK、最大/最小差分のループを使用して有効な答えがありますが、オラクルで大きな値をループすることは本当に不可能ですか?
編集私が取得したエラーは次のとおりです。
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 の数値表現)の結果です。