Snowflake UDTF如何接受任意小数位数的数值输入?
解决UDTF输入类型不匹配问题
你的问题根源在于函数输入参数的精度限制:原定义x_in number(3, 2)强制要求输入必须是总位数3位、小数位2位的数值类型。当输入变为number(2,1)(比如0.50)时,数据库会严格校验类型精度,触发不匹配错误。
直接修改输入参数的类型即可解决问题,无需用户做强制转换或传字符串:
将输入参数的类型改为不带精度和刻度的number(或numeric,多数数据库中二者等价),这样就能接受任意小数位数、任意总位数的数值输入。
修改后的函数代码:
Create or replace function my_func(x_in number) Returns table( X_out number(4, 2), Y_out number(4, 2) ) As $$ Select a * x_in, b From my_table $$ ;
补充说明
- 不带精度的
number类型会自动适配输入的数值精度,不会因为输入的小数位数或总位数变化触发类型错误。 - 函数返回值的
number(4,2)可以保留,数据库会自动将计算结果截断/四舍五入到指定精度,不影响输入的兼容性。
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

