Anonim

Mavens baze podatkov bo ime Oracle prepoznal kot elektrarna v svetu sistema upravljanja relacijskih baz podatkov (DBMS). Oracle že desetletja proizvaja zelo zmogljive rešitve DBMS in ostaja vodilni na tem področju. Številni končni uporabniki izdelkov baz podatkov se lahko zmedejo ali zmedejo, kadar uporabljajo vnaprej oblikovano rešitev, in ustvari sporočilo o napaki. Eno pogosto sporočilo o napaki, ki ga je ustvaril Oracle, je napaka ORA-06512.

Oglejte si tudi naš članek Kako popraviti napako ora-00942

Oracle je sistem za upravljanje podatkovnih baz, ki že štirideset let deluje v različnih oblikah. Prvotno je uporabljal nekaj, imenovano shema SCOTT, poimenovano po enem od prvotnih uslužbencev Oracle. V Oracle ste se prvič prijavili z uporabniškim imenom 'scott' in geslom 'tiger', ki je poimenovano po Scottovem mačku. Zdaj obstaja več shem, odvisno od tega, za kaj uporabljate Oracle.

Če bi radi od začetka izvedeli več o Oracleu, je ta stran zelo koristna.

Odpravljanje napak ORA-06512

V Oracle je napaka ORA-06512 splošna napaka pri izjemih, ki pove, kje gre kaj narobe. Gre za eno najmanj specifičnih napak, ki jo povzroči Oracle, saj vam pove le, da obstaja težava, ne pa, kaj gre narobe.

Na primer, običajno sporočilo o napaki se lahko glasi:

»ORA-01422: natančen prenos vrne več kot zahtevano število vrstic

ORA-06512: pri "DATABASE_NAME", vrstica 66

ORA-06512: v vrstici 1 ″

Prva vrstica vam pove, kakšna napaka se dogaja, v tem primeru poizvedba vrne več podatkov, kot poizvedba pričakuje, tako da ne ve, kako ravnati. Koda 'ORA-01422' je dejanska koda napake, ki jo morate pogledati. ORA-06512 je le splošna koda napake.

Druga vrstica vam pove, kje se pojavlja napaka. DATABASE_NAME bo zbir podatkov, v kateri boste takrat delali. Vrstica 66 je vrstica, v kateri se napaka dogaja, in je vrstica, ki jo morate preveriti, da popravite napako.

Tretja vrstica v sintaksi napake vam pove, od kod prihaja klic. Preverite prvo linijo in videli boste klic na DATABASE_NAME.

Če želite odpraviti to posebno napako, morate odpraviti težavo, ki jo je povzročil ORA-01422, in sicer je "natančen prinaša vrne več kot zahtevano število vrstic" ali dodati dodatek za obdelavo izjem, da Oracleu naročite, da ga ignorira. Ker je vedno bolj priporočljivo odpraviti osnovno težavo, je to pot.

Lahko storite dve stvari. Če pričakujete, da bo poizvedba vrnila več kot eno vrstico, jo lahko spremenite, da ne preseneti. Če pričakujete, da bo poizvedba vrnila samo eno vrstico, jo lahko spremenite tudi za to.

Pričakujete več kot eno vrstico:

za X v (izberite * od t, kjer…)

zanka

- tukaj obdelajte zapis X

končna zanka;

To bi moralo odpraviti napako v poizvedbah baze podatkov, pri katerih bi bilo vrnjeno več vrst.

Če pričakujete, da se bo vrnila samo ena vrstica, lahko poskusite:

začeti

izberite * v….

od t kje….

postopek….

izjema

ko NO_DATA_FOUND potem

koda za obravnavanje napak, ko ni najden zapis

ko TOO_MANY_ROWS, potem

koda za ravnanje z napakami, ko najdemo preveč zapisov

konec;

Ta druga metoda naj poda samo posamezno vrstico, ne da bi vrgla 'ORA-01422: natančen prejem vrne več kot zahtevano število vrstic' in zato prvotno napako ORA-06512.

Poizvedbo lahko tudi prilagodite tako, da vrne samo prvo vrstico odgovora z več vrsticami. To bi lahko delovalo, če nimate popolnega nadzora nad bazo podatkov ali se ne želite preveč spopadati s stvarmi, vendar še vedno potrebujete odgovor.

izjaviti

c1 kurzor za izbiro * od t, kjer…

začeti

odprta c1;

prinese c1 v ..

če (c1% neprepoznan), potem

napaka pri ravnanju, ker ni najden zapis

konec, če;

blizu c1;

konec;

(Če poznate SQL, vas bodo te ukazne vrstice morda malce zmedle… Oracle ne uporablja Transact-SQL, temveč je lastno razširitev procesnega jezika SQL, PL / SQL. Čeprav je podobno kot Transact-SQL, PL / SQL ne veliko pametnih stvari in je samo po sebi zelo zmogljivo orodje. To PL / SQL Pogosto vprašanje se vam bo morda zdelo koristno, če želite izvedeti več o Oracleu.)

Osnovna lekcija je torej napaka ORA-06512, ki sama po sebi ni nekaj, kar bi lahko neposredno odpravili. Namesto tega morate ugotoviti, kakšna je dejanska napaka, katere druge napake vam bodo povedale, in nato te napake odpravljati eno za drugo.

Imate kakšne nasvete ali trike Oracle, ki jih lahko delite? Povejte nam o njih v komentarjih!

Kako odpraviti napake ora-06512 v oracle db