Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách giải quyết ORA-06512 tại số dòng

Mục lục

Mô tả trong cơ sở dữ liệu Oracle

ORA-06512 trong oracle là một trong những lỗi phổ biến thường thấy trong các chương trình PLSQL trong cơ sở dữ liệu Oracle

Đây là những gì tài liệu Oracle nói về lỗi này

Tham khảo:Tài liệu Oracle

Bạn luôn có thể tìm thấy điều này bằng cách nhập vào bên dưới trong Unix

oerr ORA 06512

Giải thích về lỗi ORA-06512:

Lỗi ORA-06512 có nghĩa là thông báo backtrace vì ngăn xếp đang bị ràng buộc bởi các ngoại lệ không được xử lý trong mã PLSQL của bạn. Đây là lỗi bắt tất cả cho Tất cả các ngoại lệ PLSQL và thường thấy.

ORA 6512 không chỉ ra lỗi thực sự mà là số dòng của lỗi chưa được xử lý trong mã PLSQL. ORA-6512 thường sẽ xuất hiện trong một ngăn xếp thông báo trong đó thông báo trước đặt tên cho lý do gây ra lỗi, chẳng hạn như trong ví dụ sau:

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

Ở trên, lỗi được đánh dấu màu vàng là lỗi chính

Lý do gây ra lỗi ORA-06512:

Các tùy chọn để giải quyết lỗi Oracle này là:

1) Khắc phục tình trạng gây ra lỗi chưa được khắc phục.
2) Viết trình xử lý ngoại lệ cho lỗi chưa được khắc phục này.
3) Liên hệ với Oracle DBA của bạn để được trợ giúp.

Ví dụ về ORA-06512:

Hãy xem một vài ví dụ về cách làm việc với nó

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

Trong ví dụ được đưa ra ở trên, thủ tục được biên dịch thành công nhưng nó có lỗi khi thực thi

Vì vậy, lỗi thực tế là lỗi

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

Chúng tôi có thể dễ dàng sửa nó bằng cách tăng kích thước của biến

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.

Chúng tôi cũng có thể giải quyết vấn đề này bằng cách sử dụng trình xử lý ngoại lệ

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.

Một ví dụ khác sẽ là

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

Đây là lỗi thực sự của ORA-01422. chúng tôi có nhiều hơn 1 hàng trong bảng db_node và nhận nhiều giá trị cho nút. Vì vậy, một bản sửa lỗi có thể là giới hạn một hàng

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.

Một ví dụ khác sẽ là

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

Đây là lỗi thực sự của ORA-01403. chúng tôi không có hàng nào trong bảng db_node oracle và chúng tôi không tìm thấy lỗi dữ liệu nào. Vì vậy, một bản sửa lỗi có thể là đặt xử lý ngoại lệ

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.

Một số ví dụ khác có thể có trên 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

Ở đây lỗi chính là ORA-29283. Kiểm tra giải pháp bằng cách nhấp vào liên kết

Hy vọng bạn thích bài đăng này trên ORA-6512 Thông báo lỗi

Các bài viết có liên quan
ORA-00911
ORA-03113
ORA-00257
ORA-27154
ORA-29913
ORA-20001 trong Thu thập thống kê giản đồ vào 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. Hibernate không thể tìm nạp SequenceInformation từ cơ sở dữ liệu

  2. chuyển vào tên bảng dưới dạng tham số plsql

  3. Sự tự mãn dẫn đến:Rủi ro trở thành hiện thực

  4. SQL Tham gia trên các giá trị null

  5. ORA-12705:Không thể truy cập tệp dữ liệu NLS hoặc môi trường không hợp lệ