錯誤:函數呼叫不符和參數類型轉換
在您的程式碼中,您遇到錯誤:「錯誤:函數. ..確實不存在且提示:沒有函數與給定的名稱和參數類型匹配。
具體來說,您的函數 FnUpdateSalegtab09 有多個聲明為「smallint」資料類型的參數。但是,當您呼叫函數時,您將傳遞數字文字(例如“12”)作為這些參數的參數。
型別轉換問題
PostgreSQL 假定數位文字預設情況下,沒有小數點或指數作為「整數」型態。但是,函數中的參數被定義為“smallint”,其範圍為 -32768 到 32767。在沒有明確轉換的情況下傳遞超出此範圍的整數值可能會導致資料截斷或錯誤。
解
要解決此問題,您有兩個選項:
1。函數呼叫中的明確型別轉換:
您可以使用 '::smallint' 語法在函數呼叫中將數字文字明確轉換為 'smallint'。例如:
select FnUpdateSalegtab09 (4, 1, 0, 12, 1::smallint, '9'::varchar,....
2。傳遞非類型化文字:
或者,您可以在函數呼叫中使用非類型化字串文字。然後 PostgreSQL 將根據函數參數推斷出正確的資料類型。為此,請將數字文字括在單引號中:
select FnUpdateSalegtab09 (4, 1, 0, 12, '1':: smallint,....
範例
考慮以下修正後的函數呼叫:
select FnUpdateSalegtab09 (4, 1, 0, 12::smallint, 1, '9'::varchar,....
此呼叫明確地將整數文字“12”轉換為“smallint”,確保函數參數與預期資料匹配類型。
以上是PostgreSQL 函數呼叫錯誤:如何修復因類型不匹配而導致的「函數...不存在」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!