Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

PLS-00402:alias diperlukan dalam SELECT daftar kursor untuk menghindari duplikat nama kolom

Masalah Anda adalah kueri Anda memilih beberapa nilai string literal tanpa menyetel alias apa pun:

select ..., 'IPU', ... , 'IPU', ..., 'EUR', ...

Dalam kasus di atas, Oracle akan secara otomatis membuat alias jelek yang terlihat seperti ini:

select ..., 'IPU' AS "'IPU'", ..., 'IPU' AS "'IPU'", ..., 'EUR' AS "'EUR'", ...

Jadi seperti yang Anda lihat, Anda sekarang memiliki 3 nama kolom yang sangat jelek yang sangat canggung untuk digunakan, dan 2 di antaranya adalah duplikat, yang mengakibatkan kesalahan yang Anda dapatkan.

Pertimbangkan untuk memberi mereka alias berbeda yang tepat untuk menghindari ambiguitas. Ini hanya contoh, tapi sebaiknya berikan alias yang lebih bermakna sesuai dengan arti nilainya:

select ..., 'IPU' AS some_col_1, ..., 'IPU' AS some_col_2, ..., 'EUR' AS some_col_3, ...

Lucunya adalah Anda tidak saat ini menggunakan 3 nilai tersebut saat membaca kueri di kursor Anda untuk loop. Saat membaca/mengulang kursor Anda, alih-alih mencoba membaca 3 nilai dari kursor, Anda cukup membuat kode ulang nilai-nilai tersebut saat Anda mencetaknya.

Jadi sebenarnya, jika Anda benar-benar tidak peduli membaca 3 nilai dari kursor, hapus saja dari kueri. Jika tidak, ganti nilai hard-code Anda dari DBMS_OUTPUT.PUT_LINE(...) Anda dengan alias yang Anda tetapkan.

Jadi, setelah kueri Anda diperbaiki, alih-alih:

DBMS_OUTPUT.PUT_LINE(... || 'IPU' || ... || 'IPU' || ... || 'EUR' || ...);

Anda mungkin harus menggunakan kursor seperti ini:

DBMS_OUTPUT.PUT_LINE(... || De_Dub_rec.some_col_1 || ... || De_Dub_rec.some_col_2 || ... || De_Dub_rec.some_col_3 || ...);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mendapatkan Hari Terakhir Bulan Sebelumnya di Fungsi Oracle

  2. Oracle 12c DIIDENTIFIKASI OLEH NILAI

  3. Bagaimana cara menghitung minggu dalam setahun di Oracle menggunakan hari pertama non-standar dalam seminggu?

  4. Mengembalikan 'tabel' (tanpa menentukan nama kolom sebelumnya) dari fungsi PL/SQL

  5. Jumlah Catatan dalam Pernyataan Sisipkan (Oracle)