sql >> Databáze >  >> RDS >> Oracle

Jak vyřešit ORA-06512 na řádku č

Obsah

Popis v databázi Oracle

ORA-06512 v oracle je jedna z běžných chyb pozorovaných v programech PLSQL v databázi Oracle

Zde je to, co o této chybě říká dokumentace Oracle

Reference :Dokumentace Oracle

Toto vždy najdete zadáním níže v Unix

oerr ORA 06512

Vysvětlení chyby ORA-06512:

Chyba ORA-06512 znamená backtrace zprávu, když je zásobník odvíjen neošetřenými výjimkami ve vašem kódu PLSQL. Toto je univerzální chyba pro všechny výjimky PLSQL a je běžně k vidění.

ORA 6512 neuvádí skutečnou chybu, ale číslo řádku neošetřené chyby v kódu PLSQL. ORA-6512 se obvykle objeví v zásobníku zpráv, ve kterém předchozí zpráva uvádí důvod chyby, jako v následujícím příkladu:

ORA-06502:PL/SQL:numerická nebo hodnotová chyba ORA-06512:na lince 1112

Ve výše uvedeném je žlutě zvýrazněná chyba hlavní chybou

Důvody chyby ORA-06512:

Možnosti řešení této chyby Oracle jsou:

1) Opravte stav, který způsobuje neošetřenou chybu.
2) Napište obslužnou rutinu výjimky pro tuto neošetřenou chybu.
3) Požádejte o pomoc svého Oracle DBA.

Příklady ORA-06512:

Podívejme se na několik příkladů, jak na tom pracovat

PROCEDUR VYTVOŘENÍ NEBO NAHRAZENÍ Testora_procASSite_name varchar2(5);beginsite_name :='techgoeasy.com';end;/Procedure created.sql> Exec Testora_procERROR na řádku 1:ORA-06502:PL/SQL:numerická nebo hodnota chyba:znak vyrovnávací paměť řetězce je příliš maláORA-06512:na řádku 5

Ve výše uvedeném příkladu byla procedura úspěšně zkompilována, ale při jejím provádění došlo k chybám

Takže skutečná chyba je chyba

ORA-06502:PL/SQL:numerická nebo hodnotová chyba:vyrovnávací paměť znakového řetězce je příliš malá

Můžeme to snadno opravit zvětšením velikosti proměnné

PROCEDUR VYTVOŘENÍ NEBO NAHRAZENÍ Testora_procASSite_name varchar2(20);beginsite_name :='techgoeasy.com';end;/Procedure created.SQL> Procedura Exec TestoraprocPL/SQL byla úspěšně dokončena.

Můžeme to vyřešit také pomocí handleru výjimky

PROCEDUR VYTVOŘENÍ NEBO NAHRAZENÍ Testora_procASSite_name varchar2(5);beginsite_name :='techgoeasy.com';EXCEPTIONWHEN OTHERS THENsite_name :='tech';end;/Procedure created.SQL>Procedura Exec Testoraproc;PL/SQL byla úspěšně dokončena. /před> 

Dalším příkladem by bylo

POSTUP VYTVOŘENÍ NEBO NAHRAZENÍ Testora_procASnode_name varchar2(5);beginselect node into node_name from db_node;end;/Procedure createdSQL> Exec Testora_proc;ORA-01422:přesné načtení vrátí více než požadovaný počet řádků ORA-06512:na „NODE_NAME“, řádek 4ORA-06512:na řádku 1

Zde je ORA-01422 skutečná chyba. máme více než 1 řádek v tabulce db_node a získáváme více hodnot pro uzel. Takže jedna oprava by mohla omezit jeden řádek

POSTUP VYTVOŘENÍ NEBO NAHRAZENÍ Testora_procASnode_name varchar2(5);beginselect node into node_name from db_node kde rownum <2;end;/Procedure createdSQL> Exec Testora_proc;Procedura PL/SQL byla úspěšně dokončena.

Dalším příkladem by bylo

POSTUP VYTVOŘENÍ NEBO NAHRAZENÍ Testora_procASnode_name varchar2(5);beginselect node into node_name from db_node;end;/Procedure createdSQL> Exec Testora_proc;ORA-01403:žádná data nenalezena ORA-06512:na „NODE_NAME“, řádek 4ORA-06512:na řádku 1

Zde je ORA-01403 skutečnou chybou. v tabulce db_node oracle nemáme žádné řádky a nedostáváme žádnou chybu nalezených dat. Takže jednou opravou by mohlo být zpracování výjimek

PROCEDUR VYTVOŘENÍ NEBO NAHRAZENÍ 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'; konec; /Procedure createdSQL> Exec Testora_proc;Procedura PL/SQL byla úspěšně dokončena.

Některé další příklady mohou být na SYS.UTL_FILE

SQL> deklarovatF_LOG utl_file.file_type;beginF_LOG :=utl_file.fopen('TESTDIR','k', 'w');end;/ 2 3 4 5 6declare*ERROR na řádku 1:ORA-29283 :neplatná operace se souborem ORA-06512:na "SYS.UTL_FILE", řádek 536ORA-29283:neplatná operace souboruORA-06512:na řádku 4

Zde je hlavní chyba ORA-29283. Zkontrolujte řešení kliknutím na odkaz

Doufám, že se vám tento příspěvek na ORA-6512 líbí Chybová zpráva

Související články
ORA-00911
ORA-03113
ORA-00257
ORA-27154
ORA-29913
ORA-20001 ve sběru statistik schématu na 11g (FND_HISTOGRAM_COLS )

  1. ROLLBACK TRUNCATE v SQL Server

  2. Co je nového v SQL Server 2019?

  3. Jak v PostgreSQL vložit data pomocí příkazu COPY?

  4. Jak načíst data z kurzoru v Oracle pomocí For Loop