Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ORA-00904:pengenal tidak valid

Masalah Anda adalah tanda kutip ganda yang merusak itu.

SQL> CREATE TABLE "APC"."PS_TBL_DEPARTMENT_DETAILS"
  2  (
  3    "Company Code" VARCHAR2(255),
  4    "Company Name" VARCHAR2(255),
  5    "Sector_Code" VARCHAR2(255),
  6    "Sector_Name" VARCHAR2(255),
  7    "Business_Unit_Code" VARCHAR2(255),
  8    "Business_Unit_Name" VARCHAR2(255),
  9    "Department_Code" VARCHAR2(255),
 10    "Department_Name" VARCHAR2(255),
 11    "HR_ORG_ID" VARCHAR2(255),
 12    "HR_ORG_Name" VARCHAR2(255),
 13    "Cost_Center_Number" VARCHAR2(255),
 14    " " VARCHAR2(255)
 15  )
 16  /

Table created.

SQL>

Oracle SQL memungkinkan kita untuk mengabaikan kasus nama objek database asalkan kita membuatnya dengan nama semua dalam huruf besar, atau tanpa menggunakan tanda kutip ganda. Jika kita menggunakan huruf besar atau kecil campuran dalam skrip dan membungkus pengidentifikasi dalam tanda kutip ganda, kita dilarang menggunakan tanda kutip ganda dan huruf besar setiap kali kita merujuk ke objek atau atributnya:

SQL> select count(*) from PS_TBL_DEPARTMENT_DETAILS
  2  where Department_Code = 'BAH'
  3  /
where Department_Code = 'BAH'
      *
ERROR at line 2:
ORA-00904: "DEPARTMENT_CODE": invalid identifier


SQL> select count(*) from PS_TBL_DEPARTMENT_DETAILS
  2  where "Department_Code" = 'BAH'
  3  /

  COUNT(*)
----------
         0

SQL>

tl;dr

jangan gunakan tanda kutip ganda dalam skrip DDL

(Saya tahu sebagian besar pembuat kode pihak ketiga melakukannya, tetapi mereka cukup disiplin untuk meletakkan semua nama objek mereka dalam KASUS UPPER.)

Kebalikannya juga benar. Jika kita membuat tabel tanpa menggunakan tanda kutip ganda …

create table PS_TBL_DEPARTMENT_DETAILS
( company_code VARCHAR2(255),
  company_name VARCHAR2(255),
  Cost_Center_Number VARCHAR2(255))
;

… kita dapat mereferensikannya dan kolomnya dalam hal apa pun yang kita suka:

select * from ps_tbl_department_details

… atau

select * from PS_TBL_DEPARTMENT_DETAILS;

… atau

select * from PS_Tbl_Department_Details
where COMAPNY_CODE = 'ORCL'
and cost_center_number = '0980'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pertanyaan Teratas tentang JAVA/JRE di Oracle Apps

  2. pilih dari satu tabel, masukkan ke tabel lain kueri Oracle sql

  3. Menggunakan Dapper dengan Oracle

  4. Oracle Setara dengan MySQL INSERT IGNORE?

  5. Ubah nomor tanggal Excel menjadi tanggal Oracle