Anonim

Tietokantaohjelmat tunnistavat nimen Oracle voimalaitoksena relaatiotietokannan hallintajärjestelmän (DBMS) maailmassa. Oracle on tuottanut erittäin tehokkaita DBMS-ratkaisuja vuosikymmenien ajan ja on edelleen alan johtava yritys. Monet tietokantatuotteiden loppukäyttäjät voivat olla hämmentyneitä tai hämmentyneitä, kun he käyttävät ennalta suunniteltua ratkaisua ja se tuottaa virheviestin. Yksi yleinen Oraclen tuottama virheviesti on ORA-06512-virhe.

Katso myös artikkeli, jolla ora-00942 -virhe korjataan

Oracle on tietokannan hallintajärjestelmä, joka on ollut olemassa jo 40 vuotta eri muodoissa. Alun perin se käytti jotain nimeltään SCOTT-skeema, joka on saanut nimensä yhdeltä Oraclen alkuperäisistä työntekijöistä. Olet jopa kirjautunut sisään Oracleen ensimmäistä kertaa käyttäjätunnuksella 'scott' ja salasanalla 'tiger', joka on nimetty Scott's kissan mukaan. Nyt käytetään useita kaavioita riippuen siitä, mihin käytät Oracalia.

Jos haluat oppia lisää Oraclesta alusta alkaen, tämä sivu on erittäin hyödyllinen.

Korjaa ORA-06512 -virheet

Oracle-sovelluksessa ORA-06512-virhe on yleinen poikkeusvirhe, joka kertoo, missä jokin menee pieleen. Se on yksi harvimmista Oraclen tuottamista virheistä, koska se kertoo vain, että on ongelma, mutta ei mikä menee pieleen.

Esimerkiksi tyypillinen virheviesti voi lukea:

”ORA-01422: tarkka hakeminen tuottaa enemmän kuin vaaditaan rivimäärää

ORA-06512: osoitteessa “DATABASE_NAME”, rivi 66

ORA-06512: linjalla 1 ″

Ensimmäinen rivi kertoo, minkä tyyppinen virhe tapahtuu. Tässä tapauksessa kysely palauttaa enemmän tietoja kuin kysely odottaa, joten se ei osaa käsitellä sitä. 'ORA-01422' -koodi on todellinen virhekoodi, jota sinun on tarkasteltava. ORA-06512 on vain yleinen virhekoodi.

Toinen rivi kertoo, missä virhe esiintyy. DATABASE_NAME tulee olemaan mikä tahansa tietokanta, jossa työskentelet tuolloin. Rivi 66 on rivi, jolla virhe tapahtuu, ja rivi, joka sinun on tarkistettava virheen korjaamiseksi.

Virhesyntaksin kolmas rivi kertoo, mistä puhelu tulee. Tarkista rivi yksi ja näet puhelun DATABASE_NAME.

Tämän tietyn virheen korjaamiseksi sinun on korjattava ORA-01422: n aiheuttama ongelma, joka on 'tarkka nouto palauttaa enemmän kuin vaaditaan rivimäärää' tai sinun on lisättävä poikkeuskäsittelijä, jotta käsket Oraclen sivuuttaa sen. Koska ydinkysymyksen ratkaiseminen on aina parempi, tämä on tapa edetä.

Voit tehdä kaksi asiaa. Jos olet sitä mieltä, että kysely palauttaa useamman kuin yhden rivin, voit muokata sitä, jotta se ei yllättyisi. Jos odotat vain kyselyn palauttavan yhden rivin, voit muokata sitä myös siihen.

Odottaa useampaa kuin yhtä riviä:

X: lle (valitse * kohdasta t missä…)

silmukka

- käsittele X-tietue täällä

loppusilmukka;

Tämän pitäisi poistaa virhe tietokantakyselyissä, joissa palautettaisiin useampi kuin yksi rivi.

Jos odotat vain yhden rivin palautettavan, voit kokeilla:

alkaa

valitse * kohtaan….

mistä t.

prosessi….

poikkeus

kun NO_DATA_FOUND sitten

virheenkäsittelykoodi, kun tietuetta ei löydy

kun TOO_MANY_ROWS sitten

virheenkäsittelykoodi, kun löydetään liian monta tietuetta

end;

Tämän toisen menetelmän pitäisi antaa vain yksi rivi heittämättä 'ORA-01422: tarkka hakeminen tuottaa enemmän kuin vaaditun määrän rivejä -virhe ja siten alkuperäinen ORA-06512-virhe.

Voit myös muokata kyselyä niin, että se palauttaa vain monirivisen vastauksen ensimmäisen rivin. Tämä saattaa toimia, jos sinulla ei ole täydellistä hallintaa tietokannasta tai et halua sekoittaa asioihin liikaa, mutta tarvitset silti vastauksen.

julistaa

c1-kohdistin valitse * kohdasta t missä…

alkaa

avoin c1;

nouta c1 ..

jos (c1% ei löydy) niin

virheiden käsittelyä tietuetta ei löytynyt

loppu Jos;

sulje c1;

end;

(Jos tiedät SQL: n, nämä komentorivit saattavat olla hämmentyneitä… Oracle ei käytä Transact-SQL: tä, vaan pikemminkin omaa SQL: n, PL / SQL: n menettelykielen laajennusta. Vaikka PL / SQL on samanlainen kuin Transact-SQL, paljon älykkäitä asioita ja on itsessään erittäin tehokas työkalu. Saatat pitää tästä PL / SQL-UKK: sta hyödyllisenä, kun yrität oppia Oraclesta.)

Joten perusopetus on tässä kuin ORA-06512 -virhe sinänsä, että se ei ole jotain, jonka voit korjata suoraan. Sen sijaan sinun on selvitettävä, mikä on todellinen virhe, jonka muut virhekoodit kertovat, ja korjattava sitten nämä virheet yksitellen.

Onko sinulla Oraclen vinkkejä tai vinkkejä jaettavaksi? Kerro meille niistä kommentteissa!

Kuinka korjata ora-06512 -virheet oracle db -sovelluksessa