sql >> Database >  >> RDS >> Oracle

Hoe ORA-06512 op regelnummer op te lossen

Inhoudsopgave

Beschrijving in Oracle-database

ORA-06512 in orakel is een van de meest voorkomende fouten in PLSQL-programma's in de Oracle-database

Dit is wat de Oracle-documentatie over deze fout zegt

Referentie:Oracle-documentatie

Je kunt dit altijd vinden door hieronder in Unix te typen

oerr ORA 06512

Uitleg van de ORA-06512-fout:

Fout ORA-06512 betekent het backtrace-bericht terwijl de stapel wordt afgewikkeld door onverwerkte uitzonderingen in uw PLSQL-code. Dit is een verzamelfout voor alle PLSQL-uitzonderingen en wordt vaak gezien.

ORA 6512 geeft niet de werkelijke fout aan, maar het regelnummer van de onverwerkte fout in de PLSQL-code. ORA-6512 verschijnt meestal in een berichtenstack waarin het voorgaande bericht de reden voor de fout noemt, zoals in het volgende voorbeeld:

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

In het bovenstaande is de geel gemarkeerde fout de belangrijkste fout

Redenen voor ORA-06512-fout:

De opties om deze Oracle-fout op te lossen zijn:

1) Los de voorwaarde op die de onverwerkte fout veroorzaakt.
2) Schrijf een uitzonderingshandler voor deze onverwerkte fout.
3) Neem contact op met uw Oracle DBA voor hulp.

Voorbeelden van ORA-06512:

Laten we een paar voorbeelden bekijken om eraan te werken

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

In het bovenstaande voorbeeld is de procedure succesvol gecompileerd, maar het gaf fouten tijdens de uitvoering

Dus de werkelijke fout is de fout

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

We kunnen het gemakkelijk corrigeren door de variabele te vergroten

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.

We kunnen dit ook oplossen met de exception handler

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.

Een ander voorbeeld zou zijn

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

Hier is ORA-01422 de echte fout. we hebben meer dan 1 rij in de db_node-tabel en krijgen meerdere waarden voor node. Dus een oplossing kan een rij beperken

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.

Een ander voorbeeld zou zijn

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

Hier is ORA-01403 de echte fout. we hebben geen rijen in de Oracle-tabel db_node en we krijgen geen gegevens gevonden fout. Dus een oplossing zou het afhandelen van uitzonderingen kunnen zijn

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.

Er staan ​​nog wat voorbeelden op 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

Hier is de belangrijkste fout ORA-29283. Controleer de oplossing door op de link te klikken

Ik hoop dat je dit bericht leuk vindt op ORA-6512 Foutmelding

Gerelateerde artikelen
ORA-00911
ORA-03113
ORA-00257
ORA-27154
ORA-29913
ORA-20001 in Verzamel schemastatistieken op 11g(FND_HISTOGRAM_COLS )

  1. 11 functies om de dag, maand en jaar van een datum in MariaDB te krijgen

  2. Hoe het aantal rijen in een queryresultaat in SQL Server te retourneren

  3. Uw ASP.NET-kerntoepassing verbinden met een lokaal exemplaar van SQLServer

  4. Tellen gebruiken om het aantal keren te vinden