【发布时间】:2020-01-15 13:54:55
【问题描述】:
我正在尝试创建一个将十进制数作为参数的 SQL UDF,但如果我传入一个小数位数不同的数字,我会收到错误,即使该数字的位数较少小数点右边。
这是一个问题的例子:
CREATE OR REPLACE TABLE EXAMPLE (
COL1 NUMBER(7,5)
);
INSERT INTO EXAMPLE VALUES (9.12),(10.467),(11.6),(12.01234);
CREATE OR REPLACE FUNCTION LESS_THAN(DATA1 NUMBER(7,5))
RETURNS TABLE (COL1 NUMBER(7,5))
as
$$
SELECT COL1 FROM EXAMPLE WHERE COL1 < DATA1
$$
;
select * from table(LESS_THAN(11.3)); --Error: SQL compilation error: error line 1 at position 20 Invalid argument types for function 'LESS_THAN': (NUMBER(3,1))
select * from table(LESS_THAN(9.85)); --Error: SQL compilation error: error line 1 at position 20 Invalid argument types for function 'LESS_THAN': (NUMBER(3,2))
select * from table(LESS_THAN(10.85001)); --Works
我希望能够创建一个允许接受任何小数的 UDF。
有什么想法吗?
谢谢
【问题讨论】:
标签: sql function user-defined-functions snowflake-cloud-data-platform