Mô tả
ORA-00936:thiếu biểu thức là một trong những lỗi phổ biến mà mọi người làm việc trong Oracle SQL chắc hẳn đã gặp phải một thời gian. Điều này thường xảy ra khi bạn bỏ qua điều quan trọng trong câu lệnh Sql, tức là bạn đã bỏ sót một phần quan trọng của những gì bạn đang cố gắng chạy
Tham khảo :Tài liệu Oracle
Nguyên nhân ORA-00936:thiếu biểu thức
Lỗi Oracle này chủ yếu liên quan đến các câu lệnh SQL SELECT. Một lý do rõ ràng là danh sách cột chọn bị thiếu hoặc biểu thức trong các cột đã chọn không đầy đủ.
Danh sách kiểm tra cần chạy để giải quyết lỗi biểu thức thiếu ORA-00936
(1) Điều này xảy ra khi bạn quên liệt kê cột trong câu lệnh select
Select from mrp_details; select from mrp_details; ERROR at line 1: ORA-00936: missing expression
Cách đúng là liệt kê cột bạn muốn chọn
Select col1,col2 from mrp_details;
(2) Đôi khi chúng tôi mắc lỗi trong việc sử dụng câu lệnh Distinction. Câu lệnh sau sẽ không thành công với ORA-00936
select distinct a, b,c,d, distinct e from tab_example where b=’ABCD’ and c =1 and d= ‘JOHN’ ERROR at line 1: ORA-00936: missing expression
Có hai mệnh đề khác nhau không có ý nghĩa và gây ra lỗi
Một vi dụ khac
select a, b,c,d, distinct e from tab_example where b=’ABCD’ and c =1 and d= ‘JOHN’ ERROR at line 1: ORA-00936: missing expression
riêng biệt chỉ có thể được sử dụng khi bắt đầu
Vì vậy, tuyên bố đúng sẽ là
select distinct a, b,c,d, e from tab_example where b=’ABCD’ and c =1 and d= ‘JOHN’
(3) Lỗi này xảy ra khi một phần của biểu thức bị bỏ qua, một số ví dụ là
select 2**8 from dual; select 2**8 from dual; ERROR at line 1: ORA-00936: missing expression
** các toán tử hoạt động trong PLSQL nhưng không hoạt động trong SQL, Chúng tôi cần sử dụng hàm Power cho nó, Vì vậy, cách đúng sẽ là
select power(2,3) from dual; POWER(2,3) -------- 8
(4) Một ví dụ khác
select dept_name||' '|| from dept; select dept_name||' '|| from dept ERROR at line 1: ORA-00936: missing expression
Ở đây bạn quên đề cập đến tên cột sau toán tử nối, SQL chính xác sẽ là
select dept_name||' '||dept_no from dept;
(5) Khi bạn thêm dấu phẩy bổ sung trong danh sách cột
select dept_no, dept_name, ,dept_location from dept_table; select dept_no, dept_name, ,dept_location from dept_table; ERROR at line 1: ORA-00936: missing expression
Vì vậy, chúng ta cần kiểm tra lại câu lệnh SQL khi gặp lỗi này và đảm bảo rằng chúng ta đang mắc lỗi phổ biến
(6) Lỗi này cũng sẽ xảy ra nếu bạn bỏ qua Từ trong câu lệnh SQL
select dept_no, dept_name, ,dept_location where dept_name like ‘A%’; select dept_no, dept_name, ,dept_location where dept_name like ‘A%’; ERROR at line 1: ORA-00936: missing expression
Ở đây, chúng tôi đã bỏ qua việc đề cập đến mệnh đề from. Câu lệnhELECT có ba phần:to wit:“SELECT-> FROM-> WHERE
Bạn có thể bỏ qua mệnh đề where nhưng cần chọn và from
select dept_no, dept_name, ,dept_location from dept_table where dept_name like ‘A%’;
(7) Nó cũng có thể xuất hiện trong câu lệnh chèn như dưới đây
insert into table1 (col1,col2) values as select col1,col2 from table2; ERROR at line 1: ORA-00936: missing expression
Chúng tôi không cần các giá trị như trong tuyên bố này
insert into table1 (col1,col2) select col1,col2 from table2;
(8) Đôi khi chúng ta có thể kết hợp các hàm do người dùng định nghĩa và các hàm Oracle, và làm như vậy có thể dẫn đến cú pháp nhầm lẫn dẫn đến thông báo lỗi.
(9) Oracle cũng có một số lỗi. br /> Với những lỗi này, lỗi ORA-00936 được đưa ra khi chế độ xem CHỌN BẬT không thành công. Về cơ bản, ORA-00936 được ném khi một chế độ xem SQL được tạo từ “tạo hoặc thay thế chế độ xem MY_VIEW dưới dạng chọn t. *, Other_tab_col từ tab t, other_tab”. Điều này tạo ra một định nghĩa chế độ xem không chính xác trong DBA_VIEWS, do đó ném ORA- 00936 và các kết xuất lõi có thể xảy ra. Để sửa lỗi và giải quyết ORA-00936, MetaLink cung cấp các giải pháp sau cho phiên bản thích hợp:
Bản sửa lỗi cho 9.2.0.7:Bản vá 4192148 hiện có sẵn cho Hệ thống dựa trên Solaris (64bit) và AIX5L (64-bit) .Fix cho 10.1.0.4:
Bản vá 4212516 có sẵn cho hầu hết các nền tảng.
Tóm lại, ORA-00936 thiếu biểu thức có thể được giải quyết bằng cách kiểm tra cẩn thận câu lệnh SQL của bạn.
Các bài viết có liên quanORA-00911:ký tự không hợp lệ
ORA-03113:cuối tệp trên kênh liên lạc
ORA-00257
ORA-27154:đăng / chờ tạo không thành công trong khi khởi động
ORA-29913 với bảng bên ngoài
hoặc-20001 trong Thu thập thống kê giản đồ vào 11g (FND_HISTOGRAM_COLS)
Trình quản lý đồng thời:cleanup_node không thành công do ORA-01427