Snowflake中MMfGetPropValChar函数创建报SQL编译语法错误问题
存在的语法问题
- Snowflake 原生SQL UDF的
$$包裹的逻辑块内不需要写SELECT查询和单独的RETURN语句,直接写要返回的表达式即可 - 参数引用不需要加
${}包裹,直接写参数名propvalue即可 - CASE 语句存在多余的右括号:第二个WHEN条件末尾多写了
),CASE整体结束前也多了多余的闭合括号 - ELSE分支返回
current_timestamp是时间戳类型,和函数声明的返回值varchar(255)类型不匹配,需要做类型转换
修复后可直接运行的代码
create or replace function MMfGetPropValChar(propvalue varbinary(518)) RETURNS varchar(255) as $$ CASE WHEN substr(propvalue, 1, 3) = '0x00E700' THEN CAST(substr(propvalue, 9, 510) As Varchar(255)) WHEN substr(propvalue, 1, 3) = '0x01E700' THEN CAST(substr(propvalue, 9, CAST(substr(propvalue, 6, 1) as integer)) As Varchar(255)) ELSE CAST(current_timestamp AS VARCHAR(255)) END $$;
内容的提问来源于stack exchange,提问作者user16595206
相关产品推荐
相关产品推荐

