Oracle
 sql >> Database >  >> RDS >> Oracle

Come risolvere ORA-06512 alla riga num

Sommario

Descrizione nel database Oracle

ORA-06512 in Oracle è uno degli errori comuni visti nei programmi PLSQL nel database Oracle

Ecco cosa dice la documentazione Oracle su questo errore

Riferimento:documentazione Oracle

Puoi trovarlo sempre digitando di seguito in Unix

oerr ORA 06512

Spiegazione dell'errore ORA-06512:

Errore ORA-06512 indica il messaggio di backtrace mentre lo stack viene svolto da eccezioni non gestite nel codice PLSQL. Questo è un errore generale per tutte le eccezioni PLSQL ed è comunemente visto.

ORA 6512 non indica l'errore effettivo, ma il numero di riga dell'errore non gestito nel codice PLSQL. ORA-6512 viene in genere visualizzato in uno stack di messaggi in cui il messaggio precedente indica il motivo dell'errore, come nell'esempio seguente:

ORA-06502: PL/SQL: numeric or value error
ORA-06512: at line 1112

In quanto sopra, l'errore evidenziato in giallo è l'errore principale

Motivi dell'errore ORA-06512:

Le opzioni per risolvere questo errore Oracle sono:

1) Risolvi la condizione che causa l'errore non gestito.
2) Scrivi un gestore di eccezioni per questo errore non gestito.
3) Contatta il tuo DBA Oracle per assistenza.

Esempi di ORA-06512:

Vediamo qualche esempio su come lavorarci

CREATE OR REPLACE PROCEDURE Testora_proc
AS
Site_name varchar2(5);
begin
site_name := 'techgoeasy.com';
end;
/
Procedure created.
sql> Exec Testora_proc
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at line 5

Nell'esempio sopra, la procedura è stata compilata con successo ma ha dato errori durante l'esecuzione

Quindi l'errore effettivo è l'errore

ORA-06502: PL/SQL: numeric or value error: character string buffer too small

Possiamo facilmente correggerlo aumentando la dimensione della variabile

CREATE OR REPLACE PROCEDURE Testora_proc
AS
Site_name varchar2(20);
begin
site_name := 'techgoeasy.com';
end;
/
Procedure created.
SQL> Exec Testoraproc
PL/SQL procedure successfully completed.

Possiamo risolverlo anche usando il gestore delle eccezioni

CREATE OR REPLACE PROCEDURE Testora_proc
AS
Site_name varchar2(5);
begin
site_name := 'techgoeasy.com';
EXCEPTION
WHEN OTHERS THEN
site_name := 'tech';
end;
/
Procedure created.SQL>Exec Testoraproc;
PL/SQL procedure successfully completed.

Un altro esempio potrebbe essere

CREATE OR REPLACE PROCEDURE Testora_proc
AS
node_name varchar2(5);
begin
select node into node_name from db_node;
end;
/
Procedure created
SQL> Exec Testora_proc;
ORA-01422: exact fetch returns more than requested number of rows
ORA-06512: at “NODE_NAME”, line 4
ORA-06512: at line 1

Qui ORA-01422 è il vero errore. abbiamo più di 1 riga nella tabella db_node e otteniamo più valori per node. Quindi una soluzione potrebbe limitare una riga

CREATE OR REPLACE PROCEDURE Testora_proc
AS
node_name varchar2(5);
begin
select node into node_name from db_node where rownum <2;
end;
/
Procedure created
SQL> Exec Testora_proc;
PL/SQL procedure successfully completed.

Un altro esempio potrebbe essere

CREATE OR REPLACE PROCEDURE Testora_proc
AS
node_name varchar2(5);
begin
select node into node_name from db_node;
end;
/
Procedure created
SQL> Exec Testora_proc;
ORA-01403: no data found
ORA-06512: at “NODE_NAME”, line 4
ORA-06512: at line 1

Qui ORA-01403 è il vero errore. non abbiamo righe nella tabella oracle db_node e non stiamo ricevendo alcun errore di dati trovati. Quindi una soluzione potrebbe essere la gestione delle eccezioni

CREATE OR REPLACE PROCEDURE Testora_proc
AS
node_name varchar2(5);
begin
select node into node_name from db_node where rownum <2;
EXCEPTION WHEN NO_DATA_FOUND  
THEN 
node_name := 'tech'; 
end; 
/
Procedure created
SQL> Exec Testora_proc;
PL/SQL procedure successfully completed.

Alcuni altri esempi possono essere su SYS.UTL_FILE

SQL> declare
F_LOG  utl_file.file_type;
begin
F_LOG := utl_file.fopen('TESTDIR','k', 'w');
end;
/  2    3    4    5    6
declare
*
ERROR at line 1:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at line 4

Qui l'errore principale è ORA-29283. Verifica la soluzione facendo clic sul link

Spero che questo post su ORA-6512 ti sia piaciuto Messaggio di errore

Articoli correlati
ORA-00911
ORA-03113
ORA-00257
ORA-27154
ORA-29913
ORA-20001 in Raccogli le statistiche dello schema su 11g(FND_HISTOGRAM_COLS )