Anonim

Database mavens rozpozná jméno Oracle jako powerhouse ve světě systému správy relačních databází (DBMS). Oracle vyrábí velmi výkonná řešení DBMS po celá desetiletí a zůstává lídrem v oboru. Mnoho koncových uživatelů databázových produktů může být při použití předem navrženého řešení zmateno nebo zmateno a vygeneruje chybovou zprávu. Jednou běžnou chybovou zprávou, kterou vytvořila společnost Oracle, je chyba ORA-06512.

Viz také náš článek Jak opravit chybu ora-00942

Oracle je systém správy databází, který existuje již čtyřicet let v různých formách. Původně používal něco, čemu se říká schéma SCOTT, pojmenované po jednom z původních zaměstnanců společnosti Oracle. Dokonce jste se do Oracle přihlásili poprvé pomocí uživatelského jména 'scott' a hesla 'tygr', které je pojmenováno po Scottově kočce. Nyní existuje několik schémat používaných v závislosti na tom, k čemu Oracle používáte.

Pokud se chcete dozvědět více o Oracle od základu, tato stránka je velmi užitečná.

Oprava chyb ORA-06512

V Oracle je chyba ORA-06512 obecná chyba výjimky, která vám řekne, kde se něco pokazí. Je to jedna z nejméně konkrétních chyb, které společnost Oracle způsobila, protože říká pouze to, že se vyskytl problém, ale nikoli to, co se pokazí.

Například by se mohla objevit typická chybová zpráva:

„ORA-01422: přesné načtení vrací více než požadovaný počet řádků

ORA-06512: v „DATABASE_NAME“, řádek 66

ORA-06512: na řádku 1 ″

První řádek vám řekne, jaký typ chyby se děje, v tomto případě dotaz vrací více dat, než dotaz očekává, takže neví, jak s ním zacházet. Kód „ORA-01422“ je skutečný kód chyby, na který se musíte dívat. ORA-06512 je pouze obecný chybový kód.

Druhý řádek vám řekne, kde se chyba vyskytuje. DATABASE_NAME bude jakákoli databáze, ve které právě pracujete. Řádek 66 je řádek, kde se chyba vyskytuje, a je řádek, který musíte zkontrolovat, abyste chybu opravili.

Třetí řádek v syntaxi chyby vám řekne, odkud hovor pochází. Zaškrtněte první linku a uvidíte hovor na DATABASE_NAME.

Chcete-li opravit tuto konkrétní chybu, musíte opravit problém způsobený ORA-01422, což je „přesné načtení vrací více než požadovaný počet řádků“, nebo je třeba přidat popisovač výjimek, aby se Oracle pověděl, aby jej ignoroval. Vzhledem k tomu, že řešení zásadního problému je vždy vhodnější, je to správná cesta.

Můžete dělat dvě věci. Pokud očekáváte, že se dotaz vrátí více než jeden řádek, můžete jej upravit tak, aby nebyl překvapen. Pokud očekáváte, že dotaz vrátí pouze jeden řádek, můžete jej také upravit.

Očekáváte více než jeden řádek:

pro X in (vyberte * z t kde…)

smyčka

- zpracovejte zde X záznam

koncová smyčka;

To by mělo odstranit chybu v databázových dotazech, kde by se vrátil více než jeden řádek.

Pokud očekáváte vrácení pouze jednoho řádku, můžete zkusit:

začít

vyberte * do ….

od t, kde….

proces….

výjimka

když pak NO_DATA_FOUND

kód pro zpracování chyb, když není nalezen žádný záznam

když pak TOO_MANY_ROWS

kód chyby zpracování, když je nalezeno příliš mnoho záznamů

konec;

Tato druhá metoda by měla doručit pouze jeden řádek bez vyvolání chyby „ORA-01422: přesné načtení vrací více než požadovaný počet řádků“, a tedy původní chyba ORA-06512.

Dotaz můžete také vyladit tak, aby vrací pouze první řádek odpovědi na více řádků. To by mohlo fungovat, pokud nemáte úplnou kontrolu nad databází nebo nechcete, aby se věci bavily příliš mnoho, ale přesto potřebujete odpověď.

prohlásit

c1 kurzor pro výběr * z t, kde…

začít

otevřené cl;

načíst c1 do ..

if (c1% notfound) pak

zpracování chyb pro žádný záznam nebyl nalezen

end if;

zavřít c1;

konec;

(Pokud znáte SQL, můžete být těmito příkazovými řádky trochu zmateni … Oracle nepoužívá Transact-SQL, ale je to spíše vlastní procedurální jazykové rozšíření SQL, PL / SQL. Přestože je podobné Transact-SQL, PL / SQL mnoho chytrých věcí a je velmi mocným nástrojem samo o sobě. Možná se vám bude zdát tento FAQ pro otázky PL / SQL užitečné, když se pokoušíte dozvědět se o Oracle.)

Základní lekce je tedy chyba ORA-06512, což samo o sobě není něco, co můžete opravit přímo. Místo toho musíte zjistit, jaká je skutečná chyba, které vám ostatní chybové kódy řeknou, a pak tyto chyby řešit jeden po druhém.

Máte nějaké tipy nebo triky Oracle, které můžete sdílet? Dejte nám o nich vědět v komentářích!

Jak opravit chyby ora-06512 v programu Oracle Oracle