Anonim

Duomenų bazės „Oracle“ vardą atpažins kaip stiprintuvą reliacinių duomenų bazių valdymo sistemos (DBVS) pasaulyje. „Oracle“ dešimtmečius gamino labai galingus DBMS sprendimus ir išlieka šios srities lydere. Daugelis galutinių duomenų bazių produktų vartotojų gali būti supainioti ar suklaidinti, kai jie naudojasi iš anksto sukurtu sprendimu ir jis sukuria klaidos pranešimą. Vienas bendras „Oracle“ pateiktas klaidos pranešimas yra „ORA-06512“ klaida.

Taip pat skaitykite mūsų straipsnį „Kaip ištaisyti„ ora-00942 “klaidą

„Oracle“ yra duomenų bazių valdymo sistema, egzistuojanti keturiasdešimt metų įvairiomis formomis. Iš pradžių jame buvo naudojama SCOTT schema, pavadinta vieno iš originalių „Oracle“ darbuotojų vardu. Jūs net pirmą kartą prisijungėte prie „Oracle“ naudodamiesi vartotojo vardu „scott“ ir slaptažodžiu „tigru“, kuris pavadintas Scoto katės vardu. Dabar yra naudojamos kelios schemos, atsižvelgiant į tai, kam naudojate „Oracle“.

Jei norėtumėte daugiau sužinoti apie „Oracle“ iš pat pradžių, šis puslapis yra labai naudingas.

Ištaisomos ORA-06512 klaidos

„Oracle“ programoje ORA-06512 klaida yra bendrosios išimties klaida, nurodanti, kur kažkas negerai. Tai viena iš mažiausiai „Oracle“ padarytų klaidų, nes ji jums sako tik apie problemą, bet ne apie tai, kas blogai.

Pvz., Tipinis klaidos pranešimas gali būti toks:

„ORA-01422: tikslus gavimas pateikia daugiau nei reikalaujama eilučių skaičių

ORA-06512: „DATABASE_NAME“, 66 eilutė

ORA-06512: 1 eilutėje ″

Pirmoje eilutėje nurodoma, kokia klaida įvyksta. Šiuo atveju užklausa pateikia daugiau duomenų, nei tikimasi užklausoje, todėl ji nežino, kaip su ja elgtis. Kodas „ORA-01422“ yra tikrasis klaidos kodas, į kurį turite atkreipti dėmesį. ORA-06512 yra tik bendras klaidos kodas.

Antroje eilutėje nurodoma, kur atsiranda klaida. „DATABASE_NAME“ bus bet kokia duomenų bazė, kurioje tuo metu dirbate. 66 eilutė yra eilutė, kurioje įvyksta klaida, ir yra eilutė, kurią turite patikrinti, jei norite ištaisyti klaidą.

Trečioji klaidų sintaksės eilutė nurodo, iš kur skambinama. Patikrinkite pirmą eilutę ir pamatysite skambutį DATABASE_NAME.

Norėdami ištaisyti šią klaidą, turite pašalinti problemą, kurią sukelia ORA-01422, ty „tikslus gavimas pateikia daugiau nei reikalaujamas eilučių skaičius“ arba turite pridėti išimties tvarkyklę, kad „Oracle“ lieptų jos ignoruoti. Kadangi visada geriau išspręsti pagrindinę problemą, tai reikia žengti.

Galite padaryti du dalykus. Jei tikitės, kad užklausa pateiks daugiau nei vieną eilutę, galite ją modifikuoti, kad ji nenustebtų. Jei tikitės, kad užklausa grįš tik vieną eilutę, galite ją modifikuoti ir tam.

Laukiama daugiau nei vienos eilutės:

X in (pasirinkite * iš t, kur…)

kilpa

- apdorokite X įrašą čia

pabaigos kilpa;

Tai turėtų panaikinti klaidą duomenų bazės užklausose, kur būtų grąžinta daugiau nei viena eilutė.

Jei tikitės, kad bus grąžinta tik viena eilutė, galite išbandyti:

prasideda

pasirinkite * į….

iš t kur….

procesas….

išimtis

kai NO_DATA_FOUND tada

klaidos tvarkymo kodas, kai nerandamas įrašas

kai TOO_MANY_ROWS tada

klaidų tvarkymo kodas, kai rasta per daug įrašų

galas;

Šis antrasis metodas turėtų pateikti tik vieną eilutę, neišmesdamas „ORA-01422“: tikslus gavimas pateikia daugiau nei reikalaujama eilučių skaičiaus klaida, todėl originali „ORA-06512“ klaida.

Taip pat galite patikslinti užklausą, kad ji grąžintų tik pirmąją kelių eilių atsakymo eilę. Tai gali veikti, jei jūs visiškai nekontroliuojate duomenų bazės arba nenorite per daug susipykti su dalykais, tačiau vis tiek reikia atsakymo.

pareikšti

c1 žymeklis pasirinkite * iš t, kur…

prasideda

atviras c1;

atsisiųsti c1 į ..

if (c1% nenustatyta) tada

klaidų tvarkymas nerastas įrašas

pabaiga if;

uždaryti c1;

galas;

(Jei žinote SQL, jus gali šiek tiek supainioti šios komandų eilutės … „Oracle“ nenaudoja „Transact-SQL“, o veikiau yra savo SQL, PL / SQL procedūrinės kalbos pratęsimas. Nors PL / SQL yra panašus į „Transact-SQL“, jis veikia daug protingų dalykų ir yra labai galingas įrankis. Galbūt jums šis PL / SQL DUK gali būti naudingas bandant sužinoti apie „Oracle“.)

Taigi pagrindinė pamoka yra ORA-06512 klaida, savaime suprantama, nėra kažkas, ką galite tiesiogiai ištaisyti. Vietoj to jūs turite išsiaiškinti, kokia yra tikroji klaida, kurią jums nurodys kiti klaidų kodai, ir tada pašalinti šias klaidas po vieną.

Ar turite „Oracle“ patarimų ar gudrybių, kuriomis galėtumėte pasidalinti? Praneškite mums apie juos komentaruose!

Kaip ištaisyti „ora-06512“ klaidas „oracle db“