Rumah >pangkalan data >tutorial mysql >Mengapa Panggilan Fungsi SQL Saya Gagal dengan Ralat 'fungsi tidak wujud'?

Mengapa Panggilan Fungsi SQL Saya Gagal dengan Ralat 'fungsi tidak wujud'?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-27 09:33:11332semak imbas

Why Does My SQL Function Call Fail with

RALAT: Fungsi Tidak Wujud dan Tiada Fungsi Padanan Ditemui

Pertimbangkan mesej ralat berikut:

ERROR:  function fnupdatesalegtab09(integer, integer, integer, integer, integer, unknown, unknown, integer, unknown, integer, unknown, integer, integer, integer, numeric, integer, integer, unknown, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, unknown, integer, boolean, unknown, unknown, unknown, unknown, boolean, unknown, unknown, integer, unknown, integer, integer, integer, integer, integer) does not exist  
LINE 1: select FnUpdateSalegtab09 (4, 1, 0, 12, 1, '9','2014-07-15',...
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.  

Dalam senario ini, percubaan telah dibuat untuk memanggil fungsi bernama FnUpdateSalegtab09 dengan parameter tertentu. Walau bagaimanapun, ralat menunjukkan bahawa fungsi itu tidak wujud. Selain itu, ralat menunjukkan bahawa tiada fungsi yang sepadan dengan nama dan jenis hujah yang ditentukan.

Punca Punca

Ralat mungkin disebabkan oleh isu penghantaran. Dalam panggilan fungsi, literal angka digunakan untuk parameter yang ditakrifkan sebagai smallint dalam definisi fungsi. Literal berangka pada mulanya dianggap sebagai integer jenis jika nilainya sesuai dengan integer jenis. Memandangkan tiada hantaran jenis eksplisit disediakan, ini boleh menyebabkan ketidakpadanan antara jenis hujah yang dijangka dan sebenar.

Penyelesaian

Untuk menyelesaikan isu ini, tambahkan hantaran jenis eksplisit pada literal angka dalam panggilan fungsi untuk memadankan jenis data smallint yang dijangkakan. Sebagai alternatif, anda boleh menggunakan huruf yang dipetik (tidak ditaip) dalam panggilan fungsi.

Contoh

Panggilan Salah:

SELECT * FROM f_typetest(1);

Betul Panggilan:

SELECT * FROM f_typetest('1');
SELECT * FROM f_typetest(smallint '1');
SELECT * FROM f_typetest(1::int2);
SELECT * FROM f_typetest('1'::int2);

Dengan membuat ini pelarasan, panggilan fungsi kini seharusnya dikenali dan dilaksanakan tanpa ralat.

Atas ialah kandungan terperinci Mengapa Panggilan Fungsi SQL Saya Gagal dengan Ralat 'fungsi tidak wujud'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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