首页 > 解决方案 > 尝试创建函数但在将其设置为实际返回类型时获取不兼容的数据类型

问题描述

我正在尝试在我的架构下的 Snowflake 中创建一个简单的函数。它所做的只是查询一个表。

大意是:

CREATE FUNCTION MYNEWFUNCTION (DATE_KEY_INPUT INT) 
RETURNS TABLE (COLUMN1 date, COLUMN2 int, COLUMN3 varchar(255) )

as '

SELECT 
COLUMN1
,COLUMN2
,COLUMN3
FROM "TABLE"."DBO"."TABLENAME" 
where column1 = date_key_input
';

但我收到以下错误:

Declared return type 'VARCHAR(255)' for column 'COLUMN3' is incompatible with actual return type 'VARCHAR(255)'

我迷路了......它与实际数据类型不兼容?我在这里错过了什么......?

原始表中的数据类型是 varchar(255),在函数中我将其设置为 varchar(255) - 为什么会拒绝?

另外我应该注意源是视图而不是表,所以具体来说,我正在尝试创建一个从视图创建表的函数......

标签: snowflake-cloud-data-platform

解决方案


Snowflake 中的排序规则限制:

目前,排序规则和 UDF(用户定义的函数)并不总是一起工作。例如,您不能从 UDF 返回排序后的字符串值;服务器抱怨实际返回类型与声明的返回类型不兼容。您也不能将整理的字符串值传递给 UDF。

参考:https ://docs.snowflake.com/en/sql-reference/collat​​ion.html


推荐阅读