Theo OERR, ORA-00911 :ký tự không hợp lệ
Nguyên nhân :số nhận dạng không được bắt đầu bằng bất kỳ ký tự ASCII nào ngoài các chữ cái và số. $ # _ cũng được cho phép sau ký tự đầu tiên. Các số nhận dạng được bao bởi dấu ngoặc kép có thể chứa bất kỳ ký tự nào khác ngoài dấu ngoặc kép. Dấu ngoặc kép thay thế (q ’#… #’) không được sử dụng dấu cách, tab hoặc dấu xuống dòng làm dấu phân cách. Đối với tất cả các ngữ cảnh khác, hãy tham khảo Sổ tay Tham khảo Ngôn ngữ SQL.
Hành động :Không có
ORA-00911 ngoại lệ là rất phổ biến và thường xảy ra đối với các lỗi cú pháp phổ biến. Một số nguyên nhân phổ biến và cách giải quyết được đưa ra dưới đây
Danh sách kiểm tra để chạy lỗi ORA-00911
1 . Đôi khi khi bạn sao chép sql từ một trình soạn thảo khác, nó có thể không in được / ký tự đặc biệt được thêm vào (thường là Acute thay vì trích dẫn)
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%`; select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%`; * ERROR at line 1: ORA-00911: invalid character
Cách đúng là xóa các ký tự đó và thử lại
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';
2. Lỗi này xảy ra khi một ký tự đặc biệt được sử dụng trong mệnh đề WHERE của SQL và giá trị không được đặt trong các dấu ngoặc kép.
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like USER%; select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like USER%; * ERROR at line 1: ORA-00911: invalid character
Truy vấn đúng là
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';
3 . khi thêm dấu chấm phẩy (;) để kết thúc truy vấn
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';; select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%'; * ERROR at line 1: ORA-00911: invalid character
Oracle đã cải thiện điều này 11g trở lên
select CHECKPOINT_CHANGE# from v$database;; select CHECKPOINT_CHANGE# from v$database; * ERROR at line 1: ORA-00933: SQL command not properly ended
Cách đúng là sử dụng dấu chấm phẩy đơn
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%'; SQL> select CHECKPOINT_CHANGE# from v$database;
4 . khi dấu chấm phẩy (;) được thêm vào để kết thúc truy vấn trong quá trình thực thi ngay lập tức của pl / sql
SQL> begin execute immediate 'select * from v$database;'; end; / begin * ERROR at line 1: ORA-00911: invalid character ORA-06512: at line 2
Oracle đã cải thiện điều này 11g trở lên
begin execute immediate 'select * from v$database;'; end; / begin * ERROR at line 1: ORA-00933: SQL command not properly ended ORA-06512: at line 2
Cách đúng là
begin execute immediate 'select * from v$database'; end; /
5. nó cũng xảy ra khi bạn cố gắng sử dụng một ký tự đặc biệt trong một câu lệnh SQL. Nếu một ký tự đặc biệt khác với $, _ và # được sử dụng trong tên của một cột hoặc bảng tiên tri, thì tên đó phải được đặt trong dấu ngoặc kép.
create table example (j% number); create table example (j% number) * ERROR at line 1: ORA-00911: invalid character
Cách đúng
Chúng ta nên đặt chúng trong dấu ngoặc kép “”
SQL> create table example ("j%" number); Table created.
6. khi dấu chấm phẩy (;) được thêm vào để kết thúc truy vấn thực thi từ ngôn ngữ lập trình như .net hoặc java
Hy vọng bạn thích nội dung này để giải quyết ORA-00911:ký tự không hợp lệ trong cơ sở dữ liệu oracle. Vui lòng cung cấp phản hồi để cải thiện và đưa thêm nội dung vào bài đăng này
Các bài viết có liên quan Biểu thức thiếu
ORA-00936
ORA-01017:tên người dùng / mật khẩu không hợp lệ
ora-29913:lỗi khi thực thi chú thích odciexttableopen
Ràng buộc duy nhất ORA-00001 bị vi phạm
ORA-00257:lỗi trình lưu trữ. Chỉ kết nối nội bộ, cho đến khi được giải phóng.
ORA-03113:phần cuối của tệp trên kênh liên lạc
Tài liệu Oracle