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

lỗi ký tự không hợp lệ trong khi thực thi ngay lập tức

Bạn không có chuỗi ở đó (tôi giả sử là str được khai báo như một ký tự của một số mô tả). Nếu bạn muốn chèn một chuỗi, bạn cần thêm dấu ngoặc kép nếu không nó sẽ được hiểu là một cột trong trường hợp này. Một cái gì đó như:

begin
   ...
exception
   when others then
     sqltext2 := 'insert into error_table_shree select '''||str||''' from dual';
     execute immediate sqltext2;
end;
commit;

Xin lưu ý rằng tôi đã xóa dấu chấm phẩy ở cuối chuỗi của bạn; điều này là không bắt buộc (và có thể là nguyên nhân thực sự gây ra lỗi của bạn).

Cũng cần lưu ý rằng đây là một bit SQL- tiêm chích ... bạn nên sử dụng biến ràng buộc hơn là nối; tất cả điều này được mô tả trong tài liệu :

begin
   ...
exception
   when others then
     execute immediate 'insert into error_table_shree select :1 from dual' 
                  using str;
end;
commit;

Tuy nhiên, không cần sử dụng SQL động trong ngữ cảnh này; bạn có thể chỉ cần chèn giá trị biến:

begin
   ...
exception
   when others then
     insert into error_table_shree values (str);
end;
commit;

Cuối cùng, tôi hơi lo lắng về COMMIT của bạn; thật bất thường khi cam kết sau khi xử lý lỗi theo cách này. Nếu không có thêm ngữ cảnh thì không thể chắc chắn nhưng sẽ bình thường hơn nếu ghi nhật ký lỗi được thực hiện trong giao dịch tự trị



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách cài đặt Oracle Linux Automation Manager (hay còn gọi là “Oracle Ansible Tower”)

  2. ORA-01855:SA / SAU. hoặc PM / P.M. yêu cầu

  3. Nhận danh sách tất cả các hàm và thủ tục trong cơ sở dữ liệu Oracle

  4. Làm cách nào để lấy tất cả các tên kích hoạt từ cơ sở dữ liệu bằng Java JDBC?

  5. SQL. Làm thế nào để tham chiếu một khóa chính tổng hợp Oracle?