RALAT: Ketakpadanan Seruan Fungsi dan Penghantaran Jenis Argumen
Dalam kod anda, anda menghadapi ralat: "ERROR: function ... does tidak wujud dan PETUNJUK: Tiada fungsi yang sepadan dengan nama dan jenis hujah yang diberikan." Ralat ini timbul daripada ketidakpadanan antara definisi fungsi dan hujah yang diluluskan semasa seruan.
Secara khusus, fungsi anda, FnUpdateSalegtab09, mempunyai berbilang parameter yang diisytiharkan sebagai jenis data 'kecil'. Walau bagaimanapun, apabila anda memanggil fungsi, anda menghantar literal angka (cth., '12') sebagai argumen untuk parameter ini.
Jenis Isu Penghantaran
PostgreSQL menganggap literal angka tanpa titik perpuluhan atau eksponen sebagai jenis 'integer' secara lalai. Walau bagaimanapun, parameter dalam fungsi anda ditakrifkan sebagai 'smallint,' iaitu julat -32768 hingga 32767. Melepasi nilai integer tanpa hantaran eksplisit melebihi julat ini boleh membawa kepada pemotongan data atau ralat.
Penyelesaian
Untuk menyelesaikan isu ini, anda mempunyai dua pilihan:
1. Hantaran Jenis Eksplisit dalam Seruan Fungsi:
Anda boleh secara eksplisit menghantar literal angka kepada 'smallint' dalam seruan fungsi menggunakan sintaks '::smallint'. Contohnya:
select FnUpdateSalegtab09 (4, 1, 0, 12, 1::smallint, '9'::varchar,....
2. Lulus Huruf Tidak Ditaip:
Sebagai alternatif, anda boleh menggunakan literal rentetan yang tidak ditaip dalam panggilan fungsi. PostgreSQL kemudiannya akan membuat kesimpulan jenis data yang betul berdasarkan parameter fungsi. Untuk melakukan ini, sertakan literal angka dalam petikan tunggal:
select FnUpdateSalegtab09 (4, 1, 0, 12, '1':: smallint,....
Contoh
Pertimbangkan seruan fungsi yang diperbetulkan berikut:
select FnUpdateSalegtab09 (4, 1, 0, 12::smallint, 1, '9'::varchar,....
Seruan ini secara eksplisit menghantar integer literal '12' kepada 'smallint,' memastikan bahawa fungsi parameter sepadan dengan jenis data yang dijangkakan.
Atas ialah kandungan terperinci Ralat Invocation Fungsi PostgreSQL: Bagaimana untuk Membetulkan 'fungsi ... tidak wujud' kerana Jenis Tidak Padan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!