Az adatbázis-mavenok felismerik az Oracle nevet erőteljes épületként a relációs adatbázis-kezelő rendszer (DBMS) világában. Az Oracle évtizedek óta gyárt nagy teljesítményű DBMS megoldásokat, és továbbra is vezető szerepet tölt be a területen. Az adatbázis-termékek sok végfelhasználója összetéveszthető vagy zavart lehet, ha előre tervezett megoldást használnak, és ez hibaüzenetet generál. Az Oracle által generált egyik általános hibaüzenet az ORA-06512 hiba.
Lásd még az ora-00942 hiba kijavításáról szóló cikket
Az Oracle adatbáziskezelő rendszer, amely negyven éve működik különböző formákban. Eredetileg valamit, az úgynevezett SCOTT sémát használták, amelyet az Oracle egyik eredeti alkalmazottja nevez el. Sőt, először is bejelentkezett az Oracle-be 'scott' felhasználónévvel és 'tiger' jelszóval, amelyet Scott macskájának neveztek el. Most számos sémát használnak attól függően, hogy mire használják az Oracle szoftvert.
Ha az alapoktól kezdve szeretne többet megtudni az Oracle-ről, ez az oldal nagyon hasznos.
Javítva az ORA-06512 hibákat
Az Oracle operációs rendszerben az ORA-06512 hiba egy általános kivétel hibája, amely megmondja, hol történik valami rossz. Ez az Oracle által okozott legkevésbé specifikus hibák, mivel csak azt mondja, hogy van egy probléma, de nem mi történik rosszul.
Például egy tipikus hibaüzenet a következőképpen olvasható:
“ORA-01422: a pontos letöltés a kért soroknál többet hoz vissza
ORA-06512: a (z) „DATABASE_NAME” 66. sorban
ORA-06512: az 1. sorban ″
Az első sor megmutatja, hogy milyen típusú hiba történik, ebben az esetben a lekérdezés több adatot szolgáltat vissza, mint amennyit a lekérdezés vár, így nem tudja, hogyan kell kezelni. Az 'ORA-01422' kód az a tényleges hibakód, amelyet meg kell nézni. Az ORA-06512 csak az általános hibakód.
A második sor megmutatja, hogy a hiba hol fordul elő. A DATABASE_NAME lesz bármilyen adatbázis, amelyben jelenleg dolgozik. A 66. sor az a sor, ahol a hiba történik, és az a sor, amelyet ellenőriznie kell a hiba kijavításához.
A hibaszintaxis harmadik sora megmondja, honnan jön a hívás. Ellenőrizze az első sort, és megjelenik a DATABASE_NAME hívása.
Ennek a hibanek a kijavításához javítania kell az ORA-01422 által okozott problémát, azaz „a pontos letöltés a kért soroknál többet ad vissza”, vagy hozzá kell adnia egy kivételkezelőt, hogy az Oracle figyelmen kívül hagyja. Mivel az alapvető kérdés megoldása mindig előnyösebb, ez az út.
Két dolgot megtehetsz. Ha azt várja, hogy a lekérdezés egynél több sort eredményez, akkor módosíthatja, hogy ne lepődjön meg. Ha csak azt várja el, hogy a lekérdezés egyetlen sort eredményez, akkor ehhez is módosíthatja.
Egynél több sort várnak:
az X be (válassza a * -t, ahol…)
hurok
- itt dolgozza fel az X rekordot
vég hurok;
Ez kiküszöböli az adatbázis-lekérdezések hibáját, ahol egynél több sor kerül visszaadásra.
Ha csak egyetlen sor visszatérését várja el, akkor kipróbálhatja:
kezdődik
válassza a * elemet….
tól hol…
folyamat….
kivétel
amikor NO_DATA_FOUND akkor
hibakezelési kód, ha nem található rekord
amikor TOO_MANY_ROWS akkor
hibakezelési kód, ha túl sok rekord található
végén;
Ez a második módszer csak egyetlen sort eredményezhet anélkül, hogy az 'ORA-01422-et feldobná: a pontos letöltés a kért soroknál nagyobb hibát eredményez, és ezért az eredeti ORA-06512 hiba.
A lekérdezést úgy is finomíthatja, hogy csak a többsoros válasz első sorát adja vissza. Ez akkor működhet, ha nincs teljes ellenőrzése az adatbázis felett, vagy ha nem akarja túl sokat zavarni a dolgokkal, de továbbra is válaszra van szüksége.
kijelent
c1 kurzor a * kiválasztásához t-ből, ahol…
kezdődik
nyitott c1;
töltsd le a c1-et ..
if (c1% nem található) akkor
hibakezelés nem található
vége if;
c1 bezárása;
végén;
(Ha ismeri az SQL-t, akkor kissé összezavarhatja ezeket a parancssori sorokat … Az Oracle nem a Transact-SQL-t használja, hanem az SQL, PL / SQL saját eljárási nyelvi kiterjesztése. Bár a Transact-SQL-hez hasonlóan a PL / SQL sok okos dolog, és önmagában is nagyon hatékony eszköz. Lehet, hogy hasznosnak találja ezt a PL / SQL GYIK-ot, amikor megpróbálja megismerni az Oracle-t.)
Tehát az alapvető lecke itt egy ORA-06512 hiba, önmagában, nem olyan, amelyet közvetlenül megjavíthat. Ehelyett ki kell derítenie, hogy mi a tényleges hiba, melyet a többi hibakód megmond, és ezeket egyenként meg kell oldani.
Van Oracle tippeket vagy trükköket megosztani? Tudassa velünk a kommentárban!