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

ORA-00904 khi chèn / truy vấn dữ liệu từ bảng

Có vẻ như bạn đã chỉ định tên cột dưới dấu ngoặc kép trong DDL của mình.

Oracle coi số nhận dạng dưới dấu ngoặc kép là phân biệt chữ hoa chữ thường, vì vậy việc tạo bảng có tên cột là "body" hoặc "year" sẽ không giải quyết nội dung hoặc năm trong truy vấn của bạn, vì khi bạn bỏ qua dấu ngoặc kép, nó sẽ coi là biến thể chữ hoa.

Vì vậy, khi bạn có cái này:

 create table driver_case (registration varchar2(60), 
                      make varchar2(60),
                      model varchar2(60),
                      gvw number,
                      "year" number, 
                      "body" varchar2(60));

và sau đó cố gắng thực hiện

select year, body from driver_case

thì Oracle cố gắng tìm cột "YEAR", "BODY" (hãy nhớ rằng, không có số nhận dạng không có dấu ngoặc kép sẽ được chuyển thành chữ hoa) không giống với "year", "body" trong bảng của bạn.

Giải pháp của bạn?

  • Không đề cập đến tên cột dưới dấu ngoặc kép trong DDL
  • Nếu bạn bỏ qua điểm trên, thì bạn phải đề cập đến tên cột dưới dấu ngoặc kép trong tất cả các câu lệnh DML của bạn.

Tôi chứng minh điểm trên trong SQL Fiddle này



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để tôi tự động đặt lại giá trị của chuỗi về 0 mỗi năm trong Oracle 10g?

  2. Nối hoặc đính kèm một đối tượng json bên trong một đối tượng json đối tượng json khác với plsql

  3. statement.execute () trả về lỗi với Slash ở cuối PL / SQL

  4. Oracle 12c - chỉ mục trên cột 'số' có hoạt động nhanh hơn chỉ mục trên cột 'varchar' không?

  5. Sử dụng giữ nguyên:ORA-00933:Lệnh SQL không được kết thúc đúng cách