Anonim

Database mavens rozpozná názov Oracle ako powerhouse vo svete systému správy relačných databáz (DBMS). Spoločnosť Oracle už desaťročia vyrába vysoko výkonné riešenia DBMS a zostáva lídrom v tejto oblasti. Mnoho koncových používateľov databázových produktov môže byť zmätených alebo bezradných, ak používajú predurčené riešenie a generuje chybové hlásenie. Jedným z bežných chybových hlásení spoločnosti Oracle je chyba ORA-06512.

Prečítajte si aj článok v článku Ako opraviť chybu ora-00942

Oracle je systém správy databáz, ktorý existuje už štyridsať rokov v rôznych formách. Pôvodne používal niečo, čo sa nazýva schéma SCOTT pomenované po jednom z pôvodných zamestnancov spoločnosti Oracle. Dokonca ste sa do Oracle prihlásili prvýkrát pomocou užívateľského mena 'scott' a hesla 'tiger', ktoré je pomenované po Scottovej mačke. Teraz existuje niekoľko schém, ktoré sa používajú v závislosti od toho, na čo Oracle používate.

Ak sa chcete dozvedieť viac o spoločnosti Oracle od základov, táto stránka je veľmi užitočná.

Oprava chýb ORA-06512

V Oracle je chyba ORA-06512 všeobecná chyba výnimky, ktorá vám povie, kde sa niečo pokazí. Je to jedna z najmenej konkrétnych chýb spôsobených spoločnosťou Oracle, pretože vám povie iba to, že sa vyskytol problém, ale nie to, čo sa pokazí.

Napríklad sa môže zobraziť typické chybové hlásenie:

„ORA-01422: presné načítanie vráti viac ako požadovaný počet riadkov

ORA-06512: na “DATABASE_NAME”, riadok 66

ORA-06512: v riadku 1 ″

Prvý riadok vás informuje o tom, aký typ chyby sa vyskytuje. V tomto prípade dotaz vracia viac údajov, ako dopyt očakáva, takže nevie, ako s ním pracovať. Kód „ORA-01422“ je skutočný chybový kód, na ktorý musíte pozerať. ORA-06512 je iba všeobecný chybový kód.

Druhý riadok vám povie, kde sa vyskytla chyba. DATABASE_NAME bude akákoľvek databáza, v ktorej práve pracujete. Riadok 66 je riadok, v ktorom sa vyskytuje chyba, a je to riadok, ktorý musíte skontrolovať, aby sa chyba opravila.

Tretí riadok v syntaxi chyby vám povie, odkiaľ hovor prichádza. Začiarknite prvú linku a uvidíte hovor na DATABASE_NAME.

Ak chcete opraviť túto konkrétnu chybu, musíte vyriešiť problém spôsobený ORA-01422, čo je „presné načítanie vracia viac ako požadovaný počet riadkov“, alebo musíte pridať obslužnú rutinu výnimky, aby ste spoločnosti Oracle povedali, aby ju ignorovala. Keďže riešenie základných problémov je vždy vhodnejšie, je to správna cesta.

Môžete urobiť dve veci. Ak očakávate, že sa dotaz vráti viac ako jeden riadok, môžete ho upraviť tak, aby nebol prekvapený. Ak očakávate, že dotaz vráti iba jeden riadok, môžete ho tiež zmeniť.

Očakáva sa viac ako jeden riadok:

pre X in (vyberte * od t, kde …)

slučka

- tu spracujte záznam X

koncová slučka;

To by malo odstrániť chybu v databázových dopytoch, kde by sa vrátilo viac ako jeden riadok.

Ak očakávate vrátenie iba jedného riadku, môžete skúsiť:

začať

vyberte * do ….

od t, kde….

Proces ….

výnimka

keď potom NO_DATA_FOUND

chyba pri manipulácii s kódom, keď sa nenájde žiadny záznam

keď potom TOO_MANY_ROWS

chyba pri manipulácii s kódom, keď je nájdených príliš veľa záznamov

koniec;

Táto druhá metóda by mala doručiť iba jeden riadok bez vyhodenia chyby „ORA-01422: presné načítanie vráti viac ako požadovaný počet riadkov“, a teda pôvodná chyba ORA-06512.

Môžete tiež vylepšiť dotaz tak, aby vrátil iba prvý riadok odpovede na niekoľko riadkov. Môže to fungovať, ak nemáte úplnú kontrolu nad databázou alebo ak nechcete, aby sa veci príliš hrávali, ale stále potrebujete odpoveď.

vyhlásiť

c1 kurzor pre výber * z t, kde …

začať

otvorené cl;

načítať c1 do ..

ak (cca. 1%), potom

spracovanie chýb pre žiadny záznam nebol nájdený

koniec Ak;

zatvoriť cl;

koniec;

(Ak viete SQL, môžete byť týmito príkazovými riadkami trochu zmätení … Oracle nevyužíva Transact-SQL, ale je to vlastné procedurálne jazykové rozšírenie SQL, PL / SQL. Hoci je podobné Transact-SQL, PL / SQL veľa šikovných vecí a je veľmi mocným nástrojom samo o sebe. Môže sa vám zdať, že tento PL / SQL FAQ je užitočný, keď sa snažíte dozvedieť sa viac o Oracle.)

Takže základnou lekciou je chyba ORA-06512 sama osebe nie je niečo, čo by ste mohli opraviť priamo. Namiesto toho musíte zistiť, aká je skutočná chyba, ktorá vám povedia ostatné chybové kódy, a potom tieto chyby postupne riešiť.

Máte nejaké tipy alebo triky od spoločnosti Oracle na zdieľanie? Dajte nám o nich vedieť v komentároch!

Ako opraviť chyby ora-06512 v aplikácii Oracle Oracle