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

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

DDD
發布: 2025-01-05 14:25:40
原創
547 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板