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

Lỗi Oracle ORA-06512

ORA-06512 là một phần của ngăn xếp lỗi. Nó cung cấp cho chúng tôi số dòng nơi xảy ra ngoại lệ, nhưng không phải là nguyên nhân của ngoại lệ. Điều đó thường được chỉ ra trong phần còn lại của ngăn xếp (mà bạn vẫn chưa đăng).

Trong một bình luận bạn đã nói

Chà, mã của bạn thực hiện điều này:

IF ((pNum < 12) OR (pNum > 14)) THEN     
    RAISE vSOME_EX;

Có nghĩa là, nó tạo ra một ngoại lệ khi pNum không nằm trong khoảng từ 12 đến 14. Vậy phần còn lại của ngăn xếp lỗi có bao gồm dòng này không?

Nếu vậy, tất cả những gì bạn cần làm là thêm một khối ngoại lệ để xử lý lỗi. Có lẽ:

PROCEDURE PX(pNum INT,pIdM INT,pCv VARCHAR2,pSup FLOAT)
AS
    vSOME_EX EXCEPTION;

BEGIN 
    IF ((pNum < 12) OR (pNum > 14)) THEN     
        RAISE vSOME_EX;
    ELSE  
        EXECUTE IMMEDIATE  'INSERT INTO M'||pNum||'GR (CV, SUP, IDM'||pNum||') VALUES('||pCv||', '||pSup||', '||pIdM||')';
    END IF;
exception
    when vsome_ex then
         raise_application_error(-20000
                                 , 'This is not a valid table:  M'||pNum||'GR');

END PX;

Tài liệu này trình bày sâu về việc xử lý các ngoại lệ PL / SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. số nhận dạng oracle ở chế độ ngủ đông quá dài ORA-00972

  2. Oracle sử dụng một chuỗi bên trong điều kiện IN

  3. Khóa chính nhận dạng được tạo tự động của Oracle SQL

  4. Cách sử dụng phép nối trên ba bảng

  5. Các cân nhắc về PreparedStatement, CallableStatement và Performance