Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment résoudre ORA-06512 au numéro de ligne

Table des matières

  • Description dans la base de données Oracle
  • Explication de l'erreur ORA-06512 :
  • Raisons de l'erreur ORA-06512 :
  • Exemples d'ORA-06512 :

Description dans la base de données Oracle

ORA-06512 dans oracle est l'une des erreurs courantes rencontrées dans les programmes PLSQL dans la base de données Oracle

Voici ce que dit la documentation Oracle à propos de cette erreur

Référence :Documentation Oracle

Vous pouvez toujours le trouver en tapant ci-dessous sous Unix

oerr ORA 06512

Explication de l'erreur ORA-06512 :

Erreur ORA-06512 signifie le message de backtrace lorsque la pile est déroulée par des exceptions non gérées dans votre code PLSQL. Il s'agit d'une erreur fourre-tout pour toutes les exceptions PLSQL et elle est courante.

ORA 6512 n'indique pas l'erreur réelle, mais le numéro de ligne de l'erreur non gérée dans le code PLSQL. ORA-6512 apparaîtra généralement dans une pile de messages dans laquelle le message précédent nomme la raison de l'erreur, comme dans l'exemple suivant :

ORA-06502 :PL/SQL :erreur numérique ou de valeur ORA-06512 :à la ligne 1112

Dans ce qui précède, l'erreur surlignée en jaune est l'erreur principale

Raisons de l'erreur ORA-06512 :

Les options pour résoudre cette erreur Oracle sont :

1) Corrigez la condition à l'origine de l'erreur non gérée.
2) Écrivez un gestionnaire d'exceptions pour cette erreur non gérée.
3) Contactez votre administrateur de base de données Oracle pour obtenir de l'aide.

Exemples d'ORA-06512 :

Voyons quelques exemples sur la façon de travailler dessus

CREATE OR REPLACE PROCEDURE Testora_procASSite_name varchar2(5);beginsite_name :='techgoeasy.com';end;/Procedure created.sql> Exec Testora_procERROR à la ligne 1 :ORA-06502 : PL/SQL :erreur numérique ou de valeur :caractère tampon de chaîne trop petitORA-06512 :à la ligne 5

Dans l'exemple ci-dessus, la procédure a été compilée avec succès mais elle a donné des erreurs lors de l'exécution

Donc l'erreur réelle est l'erreur

ORA-06502 :PL/SQL :erreur numérique ou de valeur :tampon de chaîne de caractères trop petit

On peut facilement le corriger en augmentant la taille de la variable

CRÉER OU REMPLACER LA PROCÉDURE Testora_procASSite_name varchar2(20);beginsite_name :='techgoeasy.com';end;/Procedure created.SQL> La procédure Exec TestoraprocPL/SQL s'est terminée avec succès.

Nous pouvons également résoudre ce problème en utilisant le gestionnaire d'exceptions

CRÉER OU REMPLACER LA PROCÉDURE Testora_procASSite_name varchar2(5);beginsite_name :='techgoeasy.com';EXCEPTIONWHEN OTHERS THENsite_name :='tech';end;/Procedure created.SQL>Exec Testoraproc;Procédure PL/SQL terminée avec succès. 

Un autre exemple serait

CRÉER OU REMPLACER LA PROCÉDURE Testora_procASnode_name varchar2(5);beginselect node into node_name from db_node;end;/Procedure createdSQL> Exec Testora_proc;ORA-01422 :la récupération exacte renvoie plus que le nombre de lignes demandé ORA-06512 :à "NODE_NAME", ligne 4ORA-06512 :à la ligne 1

Ici, ORA-01422 est la véritable erreur. nous avons plus d'une ligne dans la table db_node et obtenons plusieurs valeurs pour node.Ainsi, un correctif pourrait restreindre une ligne

CRÉER OU REMPLACER LA PROCÉDURE Testora_procASnode_name varchar2(5);beginselect node into node_name from db_node where rownum <2;end;/Procedure createdSQL> Exec Testora_proc;Procédure PL/SQL terminée avec succès.

Un autre exemple serait

CRÉER OU REMPLACER LA PROCÉDURE Testora_procASnode_name varchar2(5);beginselect node into node_name from db_node;end;/Procedure createdSQL> Exec Testora_proc;ORA-01403 :aucune donnée trouvée ORA-06512 :à "NODE_NAME", ligne 4ORA-06512 :à la ligne 1

Ici, ORA-01403 est la véritable erreur. nous n'avons pas de lignes dans la table oracle db_node et nous n'obtenons aucune erreur de données trouvées. Donc, un correctif pourrait être de mettre la gestion des exceptions

CRÉER OU REMPLACER LA PROCÉDURE Testora_procASnode_name varchar2(5);beginselect node into node_name from db_node where rownum <2;EXCEPTION WHEN NO_DATA_FOUND  THEN node_name :='tech'; finir; /Procedure createdSQL> Exec Testora_proc;Procédure PL/SQL terminée avec succès.

D'autres exemples peuvent être sur SYS.UTL_FILE

SQL> declareF_LOG utl_file.file_type;beginF_LOG :=utl_file.fopen('TESTDIR','k', 'w');end;/ 2 3 4 5 6declare*ERROR à la ligne 1 :ORA-29283 :opération de fichier invalide ORA-06512 :à "SYS.UTL_FILE", ligne 536ORA-29283 :opération de fichier invalideORA-06512 :à la ligne 4

Ici, l'erreur principale est ORA-29283. Vérifiez la solution en cliquant sur le lien

J'espère que vous aimez ce post sur ORA-6512 Message d'erreur

Articles connexes
ORA-00911
ORA-03113
ORA-00257
ORA-27154
ORA-29913
ORA-20001 dans Gather schema stats on 11g(FND_HISTOGRAM_COLS )