Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan Oracle Saya Menghasilkan ORA-00904: Pengecam Tidak Sah?

Mengapa Pertanyaan Oracle Saya Menghasilkan ORA-00904: Pengecam Tidak Sah?

Barbara Streisand
Barbara Streisandasal
2025-01-17 08:42:09872semak imbas

Why Does My Oracle Query Result in ORA-00904: Invalid Identifier?

ORA-00904: Penghuraian ralat Pengecam Tidak Sah

Penerangan masalah:

Apabila melaksanakan pertanyaan gabungan dalaman dalam pangkalan data Oracle, ralat berikut berlaku:

<code class="language-sql">ORA-00904: "TEAM"."DEPARTMENT_CODE": invalid identifier</code>

Punca Punca:

Punca ralat ialah penggunaan petikan berganda dalam nama jadual dan nama lajur dalam pertanyaan. Pangkalan Data Oracle memerlukan nama objek dalam semua huruf besar atau tanpa petikan.

Penyelesaian:

Untuk menyelesaikan isu ini, alih keluar petikan berganda daripada nama jadual dan lajur dalam pertanyaan dan juga jangan gunakan petikan berganda semasa membuat jadual dalam skrip DDL.

Pertanyaan SQL yang betul adalah seperti berikut:

<code class="language-sql">SELECT Employee.EMPLID as EmpID, 
       Employee.FIRST_NAME AS Name,
       Team.DEPARTMENT_CODE AS TeamID, 
       Team.Department_Name AS teamname
FROM PS_TBL_EMPLOYEE_DETAILS Employee
INNER JOIN PS_TBL_DEPARTMENT_DETAILS Team 
ON Team.DEPARTMENT_CODE = Employee.DEPTID</code>

Elakkan menggunakan petikan berganda dalam skrip DDL:

Amalan terbaik ialah mengelak daripada menggunakan petikan berganda dalam skrip DDL. Adalah disyorkan untuk menggunakan nama huruf besar:

<code class="language-sql">CREATE TABLE HRMS.PS_TBL_DEPARTMENT_DETAILS
(
  Company_Code VARCHAR2(255),
  Company_Name VARCHAR2(255),
  Sector_Code VARCHAR2(255),
  Sector_Name VARCHAR2(255),
  Business_Unit_Code VARCHAR2(255),
  Business_Unit_Name VARCHAR2(255),
  Department_Code VARCHAR2(255),
  Department_Name VARCHAR2(255),
  HR_ORG_ID VARCHAR2(255),
  HR_ORG_Name VARCHAR2(255),
  Cost_Center_Number VARCHAR2(255)
)</code>

Pendekatan ini memberikan fleksibiliti yang lebih besar dan mengelakkan kemungkinan ralat akibat selongsong yang tidak konsisten. Ambil perhatian bahawa lajur " " berlebihan dalam contoh DDL telah dialih keluar.

Atas ialah kandungan terperinci Mengapa Pertanyaan Oracle Saya Menghasilkan ORA-00904: Pengecam Tidak Sah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn