错误:函数调用不匹配和参数类型转换
在您的代码中,您遇到错误:“错误:函数...确实不存在并且提示:没有函数与给定的名称和参数类型匹配。”此错误是由于函数定义与调用期间传递的参数不匹配而引起的。
具体来说,您的函数 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中文网其他相关文章!