Rumah > pangkalan data > tutorial mysql > Ralat Invocation Fungsi PostgreSQL: Bagaimana untuk Membetulkan 'fungsi ... tidak wujud' kerana Jenis Tidak Padan?

Ralat Invocation Fungsi PostgreSQL: Bagaimana untuk Membetulkan 'fungsi ... tidak wujud' kerana Jenis Tidak Padan?

DDD
Lepaskan: 2025-01-04 07:19:34
asal
445 orang telah melayarinya

PostgreSQL Function Invocation Error: How to Fix

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,....
Salin selepas log masuk

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,....
Salin selepas log masuk

Contoh

Pertimbangkan seruan fungsi yang diperbetulkan berikut:

select FnUpdateSalegtab09 (4, 1, 0, 12::smallint, 1, '9'::varchar,....
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan