Rumah >pangkalan data >tutorial mysql >Mengapa Panggilan Fungsi SQL Saya Gagal dengan 'fungsi ... tidak wujud' dan Bagaimana Saya Boleh Membetulkannya?
Dalam kod yang disediakan, percubaan dibuat untuk memanggil fungsi FnUpdateSalegtab09. Walau bagaimanapun, ralat ditemui, menunjukkan bahawa fungsi itu tidak wujud atau jenis hujahnya tidak sepadan dengan yang dijangkakan.
Mesej ralat menunjukkan bahawa nama fungsi atau jenis argumen mungkin tidak betul. Mari kita siasat punca yang mungkin.
Tandatangan fungsi untuk FnUpdateSalegtab09 menentukan bahawa beberapa parameternya adalah jenis kecil. Walau bagaimanapun, dalam panggilan fungsi, parameter ini dihantar sebagai literal angka, yang pada mulanya dianggap sebagai jenis integer.
Ketidakpadanan antara jenis yang dijangka dan sebenar bagi argumen boleh mengakibatkan ralat.
Untuk menyelesaikan isu ini, anda perlu menghantar literal angka secara eksplisit ke jenis yang betul, smallint, sebelum menghantarnya ke fungsi. Anda boleh mencapai ini dengan menambahkan operator cast jenis (::) pada setiap literal, seperti yang ditunjukkan di bawah:
select FnUpdateSalegtab09( 4, 1, 0, 12, 1, '9'::varchar, '2014-07-15'::timestamp, 4048, '9'::varchar, 4048, 'MYCUSTOMER'::varchar, 12::money, 0, 0::money, 0.32, 185, 0, '2014-07-15 11:24:12 AM'::timestamp, 0, 0::money, 0, 0::money, 0::money, 0, 0::money, 0, 0::money, 0, 0::money, ''::varchar, 0::money, False, ''::varchar, '2014-07-15'::timestamp, ''::varchar, ''::varchar, False, ''::varchar, ''::varchar, 1, ''::varchar, 1, 0, 1, 0, 42 );
Dengan menambahkan hantaran jenis eksplisit, anda memastikan jenis argumen sepadan dengan jangkaan fungsi definisi, dan panggilan fungsi kini harus dilaksanakan tanpa ralat "fungsi ... tidak wujud".
Atas ialah kandungan terperinci Mengapa Panggilan Fungsi SQL Saya Gagal dengan 'fungsi ... tidak wujud' dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!