Menyelesaikan masalah ORA-00904: Pengecam Tidak Sah dalam Oracle SQL Joins
Pertanyaan join Oracle SQL kadangkala boleh membuang ralat ORA-00904: invalid identifier
. Ralat ini menandakan masalah dengan pengecam (nama jadual atau lajur) yang digunakan dalam pertanyaan anda.
Punca Punca:
Ralat ini biasanya timbul daripada merujuk objek pangkalan data yang tidak wujud atau salah dikenal pasti. Penyebab biasa termasuk kesilapan menaip dalam nama jadual atau lajur, atau menggunakan selongsong yang salah.
Contoh Ilustrasi:
Pertimbangkan pertanyaan ini:
<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>
Pertanyaan ini mungkin menghasilkan ralat ORA-00904
kerana "Pasukan" disertakan dalam petikan berganda. Oracle menganggap pengecam disebut dua kali sebagai sensitif huruf besar. Oleh itu, "Team.DEPARTMENT_CODE" berbeza daripada "team.DEPARTMENT_CODE".
Penyelesaian:
Untuk membetulkannya, sahkan semua pengecam dalam pertanyaan anda terhadap skema pangkalan data sebenar. Perhatikan dengan teliti ejaan, huruf besar, dan kehadiran sebarang petikan berganda yang tidak perlu. Oracle adalah tidak peka huruf besar secara lalai melainkan anda menggunakan petikan berganda.
Versi contoh pertanyaan yang diperbetulkan ialah:
<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>
(Nota: Walaupun contoh tidak menunjukkan perbezaan yang ketara, mungkin asal mempunyai kes yang tidak sepadan dalam skema pangkalan data yang tidak kelihatan di sini. Sentiasa semak semula nama objek pangkalan data anda.) Mengalih keluar petikan berganda yang tidak perlu juga merupakan langkah penting.
Atas ialah kandungan terperinci Mengapa pertanyaan menyertai Oracle SQL saya mengembalikan ORA-00904: Pengecam Tidak Sah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!