Menyelesaikan masalah Oracle "ORA-00904: Pengecam Tidak Sah" Ralat
Ralat "ORA-00904: Pengecam Tidak Sah" yang mengecewakan dalam pangkalan data Oracle biasanya berpunca daripada rujukan objek pangkalan data (jadual atau lajur) yang salah. Ini selalunya melibatkan kepekaan huruf besar dan penggunaan petikan berganda.
Mari kita periksa contoh pertanyaan gabungan dalaman:
<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>
Ralat timbul kerana jadual "Pasukan" dan lajurnya ("DEPARTMENT_CODE" dan "Department_Name") mungkin tidak konsisten dalam huruf besar. Sifat sensitif huruf besar Oracle memerlukan padanan tepat apabila petikan berganda digunakan semasa penciptaan objek. Menggunakan "Department_Code" dan bukannya "DEPARTMENT_CODE" akan mencetuskan ralat ORA-00904:
<code class="language-sql">SQL> select count(*) from PS_TBL_DEPARTMENT_DETAILS where Department_Code = 'BAH' / ERROR at line 2: ORA-00904: "DEPARTMENT_CODE": invalid identifier SQL> select count(*) from PS_TBL_DEPARTMENT_DETAILS where "Department_Code" = 'BAH' / COUNT(*) ---------- 0 SQL></code>
Mengelakkan petikan berganda semasa pembuatan jadual memudahkan rujukan objek, membenarkan akses tidak sensitif huruf besar-besaran:
<code class="language-sql">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</code>
Amalan terbaik: Minimumkan penggunaan petikan berganda dalam skrip DDL untuk mengelakkan isu rujukan sensitif huruf besar dan memudahkan akses objek pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Pengecam Tidak Sah' ORA-00904 dalam Oracle SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!