Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak rozwiązać ORA-06512 pod numerem linii

Spis treści

Opis w bazie danych Oracle

ORA-06512 w Oracle jest jednym z najczęstszych błędów występujących w programach PLSQL w bazie danych Oracle

Oto, co dokumentacja Oracle mówi o tym błędzie

Odniesienie:dokumentacja Oracle

Możesz to zawsze znaleźć, wpisując poniżej w systemie Unix

oerr ORA 06512

Wyjaśnienie błędu ORA-06512:

Błąd ORA-06512 oznacza komunikat śledzenia wstecznego, gdy stos jest rozwijany przez nieobsłużone wyjątki w kodzie PLSQL. Jest to błąd typu catch-all dla wszystkich wyjątków PLSQL i jest często spotykany.

ORA 6512 nie wskazuje rzeczywistego błędu, ale numer wiersza nieobsłużonego błędu w kodzie PLSQL. ORA-6512 zwykle pojawia się w stosie komunikatów, w którym poprzedni komunikat zawiera nazwę przyczyny błędu, tak jak w poniższym przykładzie:

ORA-06502:PL/SQL:błąd liczbowy lub wartościowy ORA-06512:na linii 1112

W powyższym, podświetlony na żółto błąd jest głównym błędem

Przyczyny błędu ORA-06512:

Opcje rozwiązania tego błędu Oracle to:

1) Napraw stan, który powoduje nieobsługiwany błąd.
2) Napisz procedurę obsługi wyjątków dla tego nieobsłużonego błędu.
3) Skontaktuj się z administratorem bazy danych Oracle, aby uzyskać pomoc.

Przykłady ORA-06512:

Zobaczmy kilka przykładów, jak nad tym pracować

UTWÓRZ LUB ZAMIEŃ PROCEDURĘ Testora_procASSsite_name varchar2(5);beginsite_name :='techgoeasy.com';end;/Procedure created.sql> Exec Testora_procERROR w wierszu 1:ORA-06502:PL/SQL:błąd numeryczny lub wartości:znak za mały bufor ciągówORA-06512:w linii 5

W powyższym przykładzie procedura została skompilowana pomyślnie, ale dała błędy podczas wykonywania

Tak więc rzeczywisty błąd jest błędem

ORA-06502:PL/SQL:błąd liczbowy lub wartościowy:zbyt mały bufor ciągu znaków

Możemy to łatwo poprawić, zwiększając rozmiar zmiennej

UTWÓRZ LUB ZAMIEŃ PROCEDURĘ Testora_procASSite_name varchar2(20);beginsite_name :='techgoeasy.com';end;/Procedure created.SQL> Exec Procedura TestoraprocPL/SQL zakończona pomyślnie.

Możemy to rozwiązać również za pomocą programu obsługi wyjątków

UTWÓRZ LUB ZAMIEŃ PROCEDURĘ Testora_procASSsite_name varchar2(5);beginsite_name :='techgoeasy.com';WYJĄTEKGDY INNI THENsite_name :='tech';end;/Procedure created.SQL>Exec Testoraproc; 

Innym przykładem może być

UTWÓRZ LUB ZAMIEŃ PROCEDURĘ Testora_procASnode_name varchar2(5);rozpocznij wybór węzła do nazwy_węzła z db_node;end;/Procedure createdSQL> Exec Testora_proc;ORA-01422:dokładne pobranie zwraca więcej niż żądaną liczbę wierszy ORA-06512:w „NODE_NAME”, linia 4ORA-06512:w linii 1

Tutaj ORA-01422 jest prawdziwym błędem. mamy więcej niż 1 wiersz w tabeli db_node i otrzymujemy wiele wartości dla węzła. Więc jedna poprawka może ograniczać jeden wiersz

UTWÓRZ LUB ZAMIEŃ PROCEDURĘ Testora_procASnode_name varchar2(5);rozpocznijwybierz węzeł do nazwa_węzła z db_node gdzie rownum <2;end;/Procedure createdSQL> Exec Testora_proc;PL/SQL procedura zakończona pomyślnie.

Innym przykładem może być

UTWÓRZ LUB ZAMIEŃ PROCEDURĘ Testora_procASnode_name varchar2(5);rozpocznijwybierz węzeł do nazwa_węzła z db_node;end;/Procedure createdSQL> Exec Testora_proc;ORA-01403:nie znaleziono danych ORA-06512:w „NODE_NAME”, linia 4ORA-06512:w linii 1

Tutaj ORA-01403 jest prawdziwym błędem. nie mamy wierszy w tabeli db_node oracle i nie otrzymujemy błędu nie znaleziono danych. Tak więc jednym z rozwiązań może być wprowadzenie obsługi wyjątków

 UTWÓRZ LUB ZAMIEŃ PROCEDURĘ Testora_procASnode_name varchar2(5);rozpocznijwybierz węzeł do nazwa_węzła z db_node, gdzie numer wiersza <2;WYJĄTEK,GDY NIE ZNALEZIONO_DANYCH  THEN nazwa_węzła :='tech'; koniec; /Procedure createdSQL> Exec Testora_proc;Procedura PL/SQL zakończona pomyślnie.

Więcej przykładów można znaleźć na SYS.UTL_FILE

SQL> defineF_LOG utl_file.file_type;beginF_LOG :=utl_file.fopen('TESTDIR','k', 'w');end;/ 2 3 4 5 6declare*ERROR w linii 1:ORA-29283 :nieprawidłowa operacja na pliku ORA-06512:w „SYS.UTL_FILE”, wiersz 536ORA-29283:nieprawidłowa operacja na plikuORA-06512:w wierszu 4

Tutaj głównym błędem jest ORA-29283. Sprawdź rozwiązanie, klikając link

Mam nadzieję, że podoba Ci się ten post na ORA-6512 Komunikat o błędzie

Powiązane artykuły
ORA-00911
ORA-03113
ORA-00257
ORA-27154
ORA-29913
ORA-20001 w Zbierz statystyki schematu na 11g(FND_HISTOGRAM_COLS )

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Obejście dla ORA-00997:nielegalne użycie typu danych LONG

  2. Odkryj typy pakietów PL/SQL, korzystając z widoków słownika Oracle

  3. Problem z przerywanym połączeniem Oracle JDBC

  4. Wydajne odczytywanie i importowanie plików CSV w Oracle PL/SQL

  5. Zrzucasz pola CLOB do plików?