問題タブ [ora-01426]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
7170 参照

oracle - ORA-01426: ストアド プロシージャ実行時の数値オーバーフロー例外

Delphi 6 アプリケーションを Delphi 2007 に移植し、BDE を使用して Oracle 9i データベースに接続しました。私は取得しています

ORA-01426: 数値オーバーフロー例外

ストアド プロシージャを実行するとき。これはランダムに発生し、同じパラメーターを使用してアプリケーションを介してストアド プロシージャを再実行すると、例外は発生しません。

古い Delphi 6 アプリケーションは問題なく動作します。

アイデアはありますか?

0 投票する
3 に答える
1507 参照

oracle - dbms_utility.get_time はロールオーバーできますか?

次のロジックを持つ巨大なレガシー PL/SQL プロシージャに問題があります。

wherel_elapsedおよびl_timestampはタイプであり、前の呼び出しの結果を保持しPLS_INTEGERますl_timestampget_time

この行は、バッチ実行中に突然失敗し始めましたORA-01426: numeric overflow

のドキュメントget_timeは少しあいまいですが、おそらく意図的にそうしていますが、戻り値に絶対的な意味はなく、ほとんどすべての数値である可能性があることを強く示唆しています。PLS_INTEGERそのため、32ビット整数のみをサポートできるに割り当てられているのを見るのは疑わしいです。しかし、インターウェブには、まさにこの種のことをしている人々の例がたくさんあります.

get_time手動で呼び出したときに喫煙銃が見つかりました。値-214512572を返しています。これは、32 ビット符号付き整数の最小値に疑わしいほど近い値です。最初の呼び出しと次の呼び出しの間に経過した時間の間にget_time、Oracle の内部カウンターが最大値と最小値からロールオーバーし、一方を他方から減算しようとするとオーバーフローが発生したのではないかと思っています。

これはありそうな説明ですか?get_timeもしそうなら、これは関数に固有の欠陥ですか? 今夜バッチが再び失敗するかどうかを待つこともできますが、それまでにこの動作の説明を知りたいと思っています.

0 投票する
1 に答える
835 参照

c# - NHibernate/Oracle : BINARY_DOUBLE 列に大きな数値を挿入する方法は?

1e250 のような値を含む可能性のある C# System.Double プロパティがあります。

プロパティは BINARY_DOUBLE 列にマップされます:

Binary_Double の最大値は約 1.7e+308 ( Oracle ドキュメント) ですが、例外が発生しています:
ORA-01426: 数値オーバーフロー

SQL+ を介してクエリを実行しても問題が発生します。TO_BINARY_DOUBLE キャストを使用して機能させる必要があります。私の理解では、指定された数値は暗黙的に NUMBER に変換されます。私のクエリは 1e125 (NUMBER の最大値は 1e126) で動作しますが、1e250 では動作しません。

私もこれらのマッピングを試しましたが、成功しませんでした:

使用: Oracle 11G - NHibernate 2.1.0 - .Net 3.5 SP1

あなたが提供する可能性のあるリードをありがとう!

0 投票する
2 に答える
8649 参照

sql - Oracle11g for ループの数値オーバーフロー

pl/sql 関数に次のような for ループがあります。

変数 i、min、max は次のように宣言されます。NUMERIC

私の場合、最小値と最大値はしばしば非常に大きくなりますが、範囲自体は小さいです。つまり:

ご覧のとおり、範囲は約 256 ですが、この値を使用するとオラクルは数値オーバーフロー エラーをスローし、それを機能させる方法に固執しました。

これらの値をどのように反復処理する必要がありますか?

編集

OK、最大/最小差分のループを使用して有効な答えがありますが、オラクルで大きな値をループすることは本当に不可能ですか?

編集私が取得したエラーは次のとおりです。

コードの 88 行目は次のとおりです。

min_host、max_host、client_ip はinet_aton(IP の数値表現)の結果です。

0 投票する
3 に答える
827 参照

.net - ORA-01426 の取得: Oracle DataAccess .dll を使用した .NET 4.0、C# での数値オーバーフロー

Visual Studio 2010、.Net 4、C# を使用して非常に単純な Web ページを作成しようとしています。私は Oracle DataAccess .DLL を使用しており、データベースに正常に接続しています。このコードを実行すると、「ORA-01426: Numeric Overflow」という例外が発生します。計算は一切行っていません。クエリを送信する前に、すべてを文字列に入れています。以下は私のコード サンプルです。

0 投票する
1 に答える
1150 参照

ora-01426 - +1.7976931348623155E308 を列 ORA-01426 数値オーバーフローに挿入する

状態を示すセマフォとして大きな Java double 値 (MAX-1d = +1.7976931348623155E308) を使用するアプリケーションを移植しています。エラーを生成せずにこの値を受け入れるように列を定義する方法を理解できません: ORA-01426: 数値オーバーフロー。FLOAT のさまざまな精度 (126 まで)、DOUBLE_PRECISION および BINARY_DOUBLE を試し、TO_BINARY_DOUBLE を使用するトリガーを試みましたが、すべて失敗しました。11gを使用しています。DB2 は DOUBLE をデータ型として受け入れ、この値を処理します。

0 投票する
0 に答える
5531 参照

oracle - ORA-01426: プロシージャでコミット中に数値オーバーフロー エラーが発生しました

PL/SQL コードの実行中に件名のエラーが発生し、コードのデバッグ中に、データベースで DBMS_JOB.SUBMIT の使用中にプロシージャで「COMMIT」を使用できないことがわかりました。

私の手順は少し複雑なので、参考としてサンプル コードを使用します。

エラー :

ORA-01426: 数値オーバーフロー

ORA-06512: 14行目

他のいくつかのデータベースで同じコード (サンプル コードと実際のコードの両方を意味します) を実行しようとしましたが、問題なく正常に動作します。問題はこれらの DB のみです。

詳細を追加するのを逃した場合は、お気軽にお問い合わせください。