Вашият проблем са тези пагубни двойни кавички.
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 ни позволява да игнорираме регистъра на имената на обекти на база данни, при условие че или ги създадем с имена, всички в главни букви, или без да използваме двойни кавички. Ако използваме смесени или малки букви в скрипта и обвием идентификаторите в двойни кавички, ние сме осъдени да използваме двойни кавички и точния регистър, когато се позоваваме на обекта или неговите атрибути:
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
не използвайте двойни кавички в DDL скриптове
(Знам, че повечето генератори на кодове на трети страни го правят, но те са достатъчно дисциплинирани, за да поставят имената на всичките си обекти с ГОРЕНИ РЕГИСТРИ.)
Обратното също е вярно. Ако създадем таблицата без да използваме двойни кавички...
create table PS_TBL_DEPARTMENT_DETAILS
( company_code VARCHAR2(255),
company_name VARCHAR2(255),
Cost_Center_Number VARCHAR2(255))
;
... можем да се свържем с него и неговите колони, в който случай ни харесва:
select * from ps_tbl_department_details
… или
select * from PS_TBL_DEPARTMENT_DETAILS;
… или
select * from PS_Tbl_Department_Details
where COMAPNY_CODE = 'ORCL'
and cost_center_number = '0980'