sql >> Databasteknik >  >> RDS >> Oracle

Hur man löser ORA-06512 på radnummer

Innehållsförteckning

Beskrivning i Oracle-databas

ORA-06512 i oracle är ett av de vanligaste felen i PLSQL-program i Oracle-databasen

Här är vad Oracle-dokumentationen säger om det här felet

Referens:Oracle-dokumentation

Du kan alltid hitta detta genom att skriva nedan i Unix

oerr ORA 06512

Förklaring av ORA-06512-felet:

Fel ORA-06512 betyder att bakåtspårningsmeddelandet när stacken lindas av av obehandlade undantag i din PLSQL-kod. Detta är ett sammanfattande fel för alla PLSQL-undantag och ses ofta.

ORA 6512 anger inte det faktiska felet, utan radnumret för det obehandlade felet i PLSQL-koden. ORA-6512 kommer vanligtvis att visas i en meddelandestack där föregående meddelande namnger orsaken till felet, till exempel i följande exempel:

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

I ovanstående är det gulmarkerade felet huvudfelet

Orsaker till ORA-06512-fel:

Alternativen för att lösa detta Oracle-fel är:

1) Åtgärda villkoret som orsakar det obehandlade felet.
2) Skriv en undantagshanterare för detta obehandlade fel.
3) Kontakta din Oracle DBA för hjälp.

Exempel på ORA-06512:

Låt oss se några exempel på hur man arbetar med det

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

I exemplet ovan kompileras proceduren framgångsrikt men den gav fel under körningen

Så det faktiska felet är felet

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

Vi kan enkelt korrigera det genom att öka storleken på variabeln

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.

Vi kan också lösa detta med undantagshanteraren

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.

Ett annat exempel skulle vara

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

Här är ORA-01422 det verkliga felet. vi har mer än 1 rader i db_node-tabellen och får flera värden för node. Så en fix kan vara att begränsa en rad

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.

Ett annat exempel skulle vara

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

Här är ORA-01403 det verkliga felet. vi har inga rader i db_node oracle-tabellen och vi får inget felmeddelande om att hitta data. Så en korrigering kan vara att sätta undantagshantering

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.

Några fler exempel kan finnas på 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

Här är huvudfelet ORA-29283. Kontrollera lösningen genom att klicka på länken

Hoppas du gillar det här inlägget på ORA-6512 Felmeddelande

Relaterade artiklar
ORA-00911
ORA-03113
ORA-00257
ORA-27154
ORA-29913
ORA-20001 i Samla schemastatistik på 11g(FND_HISTOGRAM_COLS )

  1. Varför i SQL kan NULL inte matcha med NULL?

  2. Hur hälsosam är din SQL-server? Proaktiv databasövervakning är avgörande

  3. Dra och släpp i MS Access och villkorlig sortering

  4. Installera Oracle Database 12c-programvaran på Windows