首頁 >資料庫 >mysql教程 >為什麼我會收到'錯誤:函數...不存在”錯誤以及如何修復函數呼叫中的類型不匹配?

為什麼我會收到'錯誤:函數...不存在”錯誤以及如何修復函數呼叫中的類型不匹配?

DDD
DDD原創
2025-01-05 14:25:40579瀏覽

Why am I getting the

理解錯誤:「錯誤:函數...不存在且提示:沒有函數與給定名稱和參數類型相符」

當嘗試執行函數時,確保指定的函數名稱和參數類型與實際函數定義匹配至關重要。如果不匹配,您可能會遇到錯誤「錯誤:函數...不存在,提示:沒有函數與給定的名稱和參數類型相符。」

解決方案:檢查參數類型

在此特定場景中,錯誤與函數定義中的「smallint」參數的類型不符有關。但是,在函數呼叫中,您使用的數字文字被假定為“整數”類型。

理解數字文字

字串文字(例如'123') 最初是無類型的,並且一直保持這種狀態,直到對其值進行賦值或顯式轉換。但是,如果數字文字(如 123)在允許的範圍內,則立即將其鍵入為“整數”,如果超出該範圍,則將立即鍵入為“bigint”或“數字”。

解決不匹配問題

要解決此問題,您有兩個options:

  • 添加顯顯式轉換:在函數呼叫中為“smallint”參數添加明確轉換:

    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)
  • 傳遞非類型化文字:傳遞引用(非類型化) “smallint 」參數的文字:

    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)

以上是為什麼我會收到'錯誤:函數...不存在”錯誤以及如何修復函數呼叫中的類型不匹配?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn