【发布时间】:2021-03-16 14:57:13
【问题描述】:
我正在尝试解决 Vertica 的 HEX_TO_BINARY 函数仅支持 VARCHAR 而不支持 LONG VARCHAR 的问题。
我正在尝试创建一个递归 SQL 函数来解决这个问题。
CREATE OR REPLACE FUNCTION LONG_HEX_TO_BINARY(HEX_VALUE LONG VARCHAR) RETURN LONG VARBINARY
AS
BEGIN
RETURN (CASE WHEN (LENGTH(HEX_VALUE) > 65000) THEN (HEX_TO_BINARY(CAST(SUBSTR(HEX_VALUE,1,65000) as VARCHAR(65000))) || LONG_HEX_TO_BINARY(SUBSTR(HEX_VALUE,65001))) ELSE HEX_TO_BINARY(CAST(HEX_VALUE AS VARCHAR(65000))) END);
END;
但是,当我尝试编译它(使用 psql)时,我得到了
ERROR: Syntax error at or near "EOL"
使用 Vertica 的 vsql 客户端我得到
ROLLBACK 3457: Function LONG_HEX_TO_BINARY(long varchar) does not exist, or permission is denied for LONG_HEX_TO_BINARY(long varchar) HINT: No function matches the given name and argument types. You may need to add explicit type casts
任何想法,是否允许创建递归函数?
【问题讨论】: