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

Cách giải quyết biểu thức bị thiếu ORA-00936

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 quan
ORA-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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối Oracle với SQL Server từ Windows

  2. Chèn hàng loạt vào cơ sở dữ liệu Oracle:Cái nào tốt hơn:Vòng lặp FOR Cursor hay một lựa chọn đơn giản?

  3. Sự khác biệt giữa phép nối băm và phép nối hợp nhất (Oracle RDBMS) là gì?

  4. Đầu ra tập lệnh của Nhà phát triển SQL cắt bớt chiều rộng sys_refcursor

  5. Cách tạo PL / SQL SYS_REFCURSOR trong cơ sở dữ liệu Oracle