理解錯誤:「錯誤:函數...不存在且提示:沒有函數與給定名稱和參數類型相符」
當嘗試執行函數時,確保指定的函數名稱和參數類型與實際函數定義匹配至關重要。如果不匹配,您可能會遇到錯誤「錯誤:函數...不存在,提示:沒有函數與給定的名稱和參數類型相符。」
解決方案:檢查參數類型
在此特定場景中,錯誤與函數定義中的「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中文網其他相關文章!