Anonim

Els mavens de bases de dades reconeixeran el nom Oracle com a central del món del sistema de gestió de bases de dades relacional (DBMS). Oracle ha produït solucions de SGBD de gran potència durant dècades i continua sent un líder en la matèria. Molts usuaris finals de productes de base de dades poden confondre’s o desconcertar-se quan utilitzen una solució predisignada i generar un missatge d’error. Un missatge d’error comú produït per Oracle és l’error ORA-06512.

Consulteu també el nostre article Com solucionar l’error ora-00942

Oracle és un sistema de gestió de bases de dades que fa quaranta anys que hi ha des de fa diverses formes. Originalment utilitzava l’esquema SCOTT, batejat amb el nom d’un dels empleats originals d’Oracle. Fins i tot vau iniciar la sessió a Oracle per primera vegada amb el nom d'usuari 'scott' i la contrasenya 'tigre' que porta el nom del gat de Scott. Ara hi ha diversos esquemes utilitzats en funció de què utilitzeu Oracle.

Si voleu obtenir més informació sobre Oracle des de la base, aquesta pàgina és molt útil.

S'estan solucionant els errors ORA-06512

A l'Oracle, un error ORA-06512 és un error d'excepció general que us indica on alguna cosa va malament. És un dels errors menys específics produïts per Oracle, ja que només us indica que hi ha un problema, però no el que va malament.

Per exemple, un missatge d’error típic podria llegir:

"ORA-01422: el fet exacte obté més del nombre de files que es demana

ORA-06512: a "DATABASE_NAME", línia 66

ORA-06512: a la línia 1 "

La primera línia us indica quin tipus d'error està passant. En aquest cas, la consulta està retornant més dades de les que s'espera que la consulta no sàpiga com gestionar-la. El codi "ORA-01422" és el codi d'error que heu de mirar. L’ORA-06512 és només el codi d’error general.

La segona línia us indica on es produeix l'error. DATABASE_NAME serà la base de dades en què treballeu. La línia 66 és la línia on es produeix l'error i és la línia que cal comprovar per corregir l'error.

La tercera línia de la sintaxi d’error us indica d’on prové la trucada. Comproveu la línia 1 i veureu una trucada al DATABASE_NAME.

Per solucionar aquest error particular, heu d'arreglar el problema causat per ORA-01422, que és "recupera la recuperació exacta del nombre de files sol·licitat" o bé haureu d'afegir un gestor d'excepcions per dir-li a Oracle que ho ignori. Com que sempre es preferible solucionar el problema bàsic, aquest és el camí a seguir.

Podeu fer dues coses. Si voleu que la consulta torni més d'una sola fila, podeu modificar-la perquè no sorprengui. Si només espereu que la consulta torni una sola fila, també la podeu modificar.

S'espera més d'una sola fila:

per a X en (seleccioneu * de t on …)

bucle

- processeu el registre X aquí

bucle final;

Això hauria d’eradicar l’error en les consultes de bases de dades on es retornarien més d’una fila.

Si només voleu que es retorni una sola fila, podeu provar:

començar

seleccioneu * a….

d’allà on….

procés …

excepció

quan NO_DATA_FOUND llavors

codi de maneig d’errors quan no es troba cap registre

quan TOO_MANY_ROWS llavors

codi de maneig d’errors quan es troben massa registres

final;

Aquest segon mètode hauria d’entregar només una sola fila sense llançar el botó ‘ORA-01422: el fet de recuperació exacta retorna més del nombre d’errors requerit de files i per tant l’error original ORA-06512.

També podeu modificar la consulta de manera que només retorni la primera fila d’una resposta de fila múltiple. Això pot funcionar si no teniu un control complet sobre la base de dades o no voleu embolicar-vos massa amb les coses, però encara necessiteu una resposta.

declarar

cursor c1 per seleccionar * de t on …

començar

obert c1;

buscar c1 a ..

si (c1% no disponible) llavors

manipulació d’errors per no trobar cap registre

final si;

tancar c1;

final;

(Si coneixeu SQL, potser us confongueu una mica amb aquestes línies d'ordres … Oracle no utilitza Transact-SQL, sinó que és una extensió de llenguatge procedimental de SQL, PL / SQL. Si bé és similar a Transact-SQL, PL / SQL sí moltes coses hàbils i és una eina molt poderosa per si mateixa. Pot ser que us resulti útil aquesta FAQ de PL / SQL quan intenteu conèixer més informació sobre Oracle.)

Així, la lliçó bàsica aquí és que un error ORA-06512, per si mateix, no és una cosa que podeu arreglar directament. En lloc d'això, heu d'esbrinar quin és l'error real, que us diran els altres codis d'error i, a continuació, tracteu els errors un a un.

Tens algun consell o trucs Oracle per compartir? Feu-nos-ho saber als comentaris!

Com solucionar els errors d'ora-06512 a oracle db