Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-00904:невалиден идентификатор

Вашият проблем са тези пагубни двойни кавички.

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'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Посочен е невалиден URL адрес на Oracle:OracleDataSource.makeURL

  2. Oracle DROP TABLE АКО СЪЩЕСТВУВА Алтернативи

  3. Oracle:Дни между две дати и Изключване на дни от седмицата как да се справят с отрицателните числа

  4. Как да премахнете дубликатите от списъка, разделен със запетая, чрез regexp_replace в Oracle?

  5. Създавайте PDF файлове с PLSQL в Oracle