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 1Zde 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 1Zde 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 4Zde 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 )