Anonim

データベースメイベンは、Oracleという名前をリレーショナルデータベース管理システム(DBMS)の世界の大国として認識します。 オラクルは何十年にもわたって非常に強力なDBMSソリューションを開発しており、この分野のリーダーであり続けています。 データベース製品のエンドユーザーの多くは、事前に設計されたソリューションを使用しているときに混乱または困惑する可能性があり、エラーメッセージが生成されます。 Oracleによって生成される一般的なエラーメッセージの1つは、ORA-06512エラーです。

ora-00942エラーの修正方法に関する記事も参照してください。

Oracleは、さまざまな形で40年にわたって存在しているデータベース管理システムです。 元々、SCOTTスキーマと呼ばれるものを使用していました。これは、Oracleの元の従業員の1人にちなんで名付けられました。 ユーザー名「scott」とスコットの猫にちなんで名付けられたパスワード「tiger」で初めてOracleにログインしました。 現在、Oracleの使用目的に応じて、いくつかのスキーマが使用されています。

Oracleの詳細をゼロから学びたい場合は、このページが非常に役立ちます。

ORA-06512エラーの修正

Oracleでは、ORA-06512エラーは一般的な例外エラーであり、どこに問題があるのか​​を示します。 Oracleによって生成される最も具体的なエラーの1つであり、問​​題があることのみを通知し、何が問題なのかを通知しないためです。

たとえば、一般的なエラーメッセージは次のようになります。

「ORA-01422:正確なフェッチで、要求された行数を超える行が返されます

ORA-06512:「DATABASE_NAME」の66行目

ORA-06512:行1 ''

最初の行は、発生しているエラーのタイプを示します。この場合、クエリはクエリが予想するより多くのデータを返しているため、処理方法がわかりません。 「ORA-01422」コードは、確認する必要がある実際のエラーコードです。 ORA-06512は単なる一般的なエラーコードです。

2行目は、エラーが発生している場所を示しています。 DATABASE_NAMEは、その時点で作業しているデータベースになります。 行66は、エラーが発生している行であり、エラーを修正するために確認する必要がある行です。

エラー構文の3行目は、呼び出し元を示しています。 1行目を確認すると、DATABASE_NAMEの呼び出しが表示されます。

この特定のエラーを修正するには、ORA-01422に起因する問題を修正する必要があります。ORA-01422は「正確なフェッチが要求された行数より多くを返します」、または例外ハンドラを追加してOracleに無視するように指示する必要があります。 コアの問題を修正することが常に望ましいので、これが道です。

できることは2つあります。 クエリが複数の行を返すと予想される場合は、それを変更して、驚くことのないようにすることができます。 クエリが単一の行を返すことのみを期待している場合は、それも変更できます。

複数の行が必要です:

Xの場合(select * from t where…)

ループ

-ここでXレコードを処理します

終了ループ。

これにより、複数の行が返されるデータベースクエリのエラーを根絶する必要があります。

単一の行が返されることのみを期待している場合は、次のことを試すことができます。

ベギン

*を選択して…。

tから…。

処理する…。

例外

NO_DATA_FOUNDの場合

レコードが見つからない場合のエラー処理コード

TOO_MANY_ROWSの場合

レコードが多すぎる場合のエラー処理コード

終わり;

この2番目の方法では、「ORA-01422:正確なフェッチが要求された行数を超えています」エラー、したがって元のORA-06512エラーをスローせずに、単一行のみを配信する必要があります。

クエリを微調整して、複数行の回答の最初の行のみを返すようにすることもできます。 これは、データベースを完全に制御できない場合や、物事をいじりたくはないが回答が必要な場合に機能します。

宣言する

tからselect *のc1カーソル…

ベギン

c1を開きます。

c1を..にフェッチします

if(c1%notfound)then

レコードが見つからない場合のエラー処理

終了する場合;

c1を閉じます。

終わり;

(SQLを知っている場合、これらのコマンドラインに少し混乱するかもしれません。OracleはTransact-SQLを使用せず、SQL、PL / SQLの手続き型言語拡張です。Transact-SQLと同様に、PL / SQLも使用します。多くの巧妙なものであり、それ自体が非常に強力なツールです。Oracleについて学習しようとするときに、このPL / SQL FAQが役立つことがあります。

したがって、ここでの基本的なレッスンはORA-06512エラーであり、それ自体は直接修正できるものではありません。 代わりに、実際のエラーが何であるかを把握し、他のエラーコードがそれを通知し、それらのエラーを1つずつ解決する必要があります。

共有すべきオラクルのヒントやコツはありますか? コメントでそれらについて教えてください!

Oracle DBのORA-06512エラーを修正する方法