Il tuo problema sono quelle perniciose virgolette.
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 ci consente di ignorare il caso dei nomi degli oggetti del database a condizione che li creiamo con i nomi tutti in maiuscolo o senza utilizzare virgolette doppie. Se utilizziamo maiuscole miste o minuscole nello script e racchiudiamo gli identificatori tra virgolette doppie siamo condannati a usare le virgolette doppie e il caso preciso ogni volta che ci riferiamo all'oggetto o ai suoi attributi:
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
non usare le virgolette negli script DDL
(So che la maggior parte dei generatori di codice di terze parti lo fa, ma sono abbastanza disciplinati da mettere tutti i nomi degli oggetti in MAIUSCOLO.)
È vero anche il contrario. Se creiamo la tabella senza usare le doppie virgolette…
create table PS_TBL_DEPARTMENT_DETAILS
( company_code VARCHAR2(255),
company_name VARCHAR2(255),
Cost_Center_Number VARCHAR2(255))
;
... possiamo fare riferimento ad esso e alle sue colonne in ogni caso ci piace:
select * from ps_tbl_department_details
… o
select * from PS_TBL_DEPARTMENT_DETAILS;
… o
select * from PS_Tbl_Department_Details
where COMAPNY_CODE = 'ORCL'
and cost_center_number = '0980'