Bagikan melalui


Resolusi Kelebihan Beban Fungsi (Entity SQL)

Topik ini menjelaskan bagaimana fungsi SQL Entitas diselesaikan.

Lebih dari satu fungsi dapat didefinisikan dengan nama yang sama, selama fungsi memiliki tanda tangan unik.

Jika demikian, kriteria berikut harus diterapkan untuk menentukan fungsi mana yang direferensikan oleh ekspresi tertentu. Kriteria ini diterapkan secara berurutan. Kriteria pertama yang hanya berlaku untuk satu fungsi adalah fungsi yang diselesaikan.

  1. Nomor parameter. Fungsi ini memiliki jumlah parameter yang sama yang ditentukan dalam ekspresi.

  2. Kecocokan persis pada jenis. Setiap jenis argumen fungsi sama persis dengan jenis parameter, atau merupakan literal null.

  3. Cocok pada subjenis. Setiap jenis argumen fungsi sama persis atau merupakan subtitik dari jenis parameter, atau argumennya adalah literal null. Jika beberapa fungsi hanya berbeda dalam jumlah konversi subtipe yang diperlukan, fungsi dengan jumlah konversi subtipe paling sedikit adalah fungsi yang diselesaikan.

  4. Cocokkan pada subjenis atau jenis promosi. Setiap jenis argumen fungsi yang sama persis, adalah sub-jenis, atau dapat dipromosikan ke jenis parameter, atau argumen adalah harfiah null. Sekali lagi, jika beberapa fungsi hanya berbeda dalam jumlah konversi dan promosi sub-jenis, fungsi dengan jumlah konversi dan promosi subtipe paling sedikit adalah fungsi yang diselesaikan.

Jika tidak ada kriteria ini yang menghasilkan satu fungsi yang dipilih, ekspresi pemanggilan fungsi bersifat ambigu.

Bahkan jika satu fungsi dapat diekstrak menggunakan aturan ini, argumen mungkin masih tidak cocok dengan parameter. Kesalahan dimunculkan dalam kasus ini.

Untuk fungsi yang ditentukan pengguna, definisi untuk fungsi kueri sebaris lebih diutamakan bahkan ketika fungsi yang ditentukan model ada dengan tanda tangan yang lebih cocok untuk fungsi yang ditentukan pengguna.

Lihat juga