为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8,jdbc驱动 DmJdbcDriver18.jar 8.1.2.138
【操作系统】:centos7_64
【CPU】:
【问题描述】*:
使用 jdbc 执行创建函数的语句报错:第 42 列[FUNCTION]附近出现错误:
语法分析出错。
奇怪的是,该语句在 达梦的官方查询分析器里执行是没有问题的,不报错的。
原始语句如下:
CREATE OR REPLACE FUNCTION ob_user_ids_to_login_names(enterprisename varchar, userids varchar) RETURN varchar is
temp_results varchar;
BEGIN
temp_results := ( select listagg(login_name, ';')
from (
select login_name from ucm_user
where
1=1
and exists( select 1 from ucm_enterprise where
ucm_enterprise.id = ucm_user.enterprise_id and account_name = enterprisename)
and id in ( select * from table( split_str(userids, ';') ) )
)
);
return temp_results;
END;
测试通过162的驱动执行该DDL未发现问题,既然Manager自身执行没有问题那么可能问题并不在JDBC驱动上,建议检查一下是否存在EXCLUDE_RESERVED_WORDS相关配置影响了语法解析层逻辑