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'