問題タブ [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.
oracle - ORA-01426: ストアド プロシージャ実行時の数値オーバーフロー例外
Delphi 6 アプリケーションを Delphi 2007 に移植し、BDE を使用して Oracle 9i データベースに接続しました。私は取得しています
ORA-01426: 数値オーバーフロー例外
ストアド プロシージャを実行するとき。これはランダムに発生し、同じパラメーターを使用してアプリケーションを介してストアド プロシージャを再実行すると、例外は発生しません。
古い Delphi 6 アプリケーションは問題なく動作します。
アイデアはありますか?
oracle - dbms_utility.get_time はロールオーバーできますか?
次のロジックを持つ巨大なレガシー PL/SQL プロシージャに問題があります。
wherel_elapsed
およびl_timestamp
はタイプであり、前の呼び出しの結果を保持しPLS_INTEGER
ますl_timestamp
get_time
この行は、バッチ実行中に突然失敗し始めましたORA-01426: numeric overflow
のドキュメントget_time
は少しあいまいですが、おそらく意図的にそうしていますが、戻り値に絶対的な意味はなく、ほとんどすべての数値である可能性があることを強く示唆しています。PLS_INTEGER
そのため、32ビット整数のみをサポートできるに割り当てられているのを見るのは疑わしいです。しかし、インターウェブには、まさにこの種のことをしている人々の例がたくさんあります.
get_time
手動で呼び出したときに喫煙銃が見つかりました。値-214512572を返しています。これは、32 ビット符号付き整数の最小値に疑わしいほど近い値です。最初の呼び出しと次の呼び出しの間に経過した時間の間にget_time
、Oracle の内部カウンターが最大値と最小値からロールオーバーし、一方を他方から減算しようとするとオーバーフローが発生したのではないかと思っています。
これはありそうな説明ですか?get_time
もしそうなら、これは関数に固有の欠陥ですか? 今夜バッチが再び失敗するかどうかを待つこともできますが、それまでにこの動作の説明を知りたいと思っています.
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
あなたが提供する可能性のあるリードをありがとう!
sql - Oracle11g for ループの数値オーバーフロー
pl/sql 関数に次のような for ループがあります。
変数 i、min、max は次のように宣言されます。NUMERIC
私の場合、最小値と最大値はしばしば非常に大きくなりますが、範囲自体は小さいです。つまり:
ご覧のとおり、範囲は約 256 ですが、この値を使用するとオラクルは数値オーバーフロー エラーをスローし、それを機能させる方法に固執しました。
これらの値をどのように反復処理する必要がありますか?
編集
OK、最大/最小差分のループを使用して有効な答えがありますが、オラクルで大きな値をループすることは本当に不可能ですか?
編集私が取得したエラーは次のとおりです。
コードの 88 行目は次のとおりです。
min_host、max_host、client_ip はinet_aton
(IP の数値表現)の結果です。
.net - ORA-01426 の取得: Oracle DataAccess .dll を使用した .NET 4.0、C# での数値オーバーフロー
Visual Studio 2010、.Net 4、C# を使用して非常に単純な Web ページを作成しようとしています。私は Oracle DataAccess .DLL を使用しており、データベースに正常に接続しています。このコードを実行すると、「ORA-01426: Numeric Overflow」という例外が発生します。計算は一切行っていません。クエリを送信する前に、すべてを文字列に入れています。以下は私のコード サンプルです。
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 をデータ型として受け入れ、この値を処理します。
oracle - ORA-01426: プロシージャでコミット中に数値オーバーフロー エラーが発生しました
PL/SQL コードの実行中に件名のエラーが発生し、コードのデバッグ中に、データベースで DBMS_JOB.SUBMIT の使用中にプロシージャで「COMMIT」を使用できないことがわかりました。
私の手順は少し複雑なので、参考としてサンプル コードを使用します。
エラー :
ORA-01426: 数値オーバーフロー
ORA-06512: 14行目
他のいくつかのデータベースで同じコード (サンプル コードと実際のコードの両方を意味します) を実行しようとしましたが、問題なく正常に動作します。問題はこれらの DB のみです。
詳細を追加するのを逃した場合は、お気軽にお問い合わせください。