为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:centos7
【CPU】:
【问题描述】*:
在达梦中自定义了INET_ATON函数,在调用的时候报错。
这个是mysql的截图,可以执行
下边是达梦的截图:
但是这个简单的可以执行成功
基于提供的数据和函数进行重现,我当前的DM数据库版本是可以支持的。
建议你更新一下数据库版本,我的版本序号:03134284058-20230713-195546-20046
我基于你的版本也可以执行该语句,没有报错。你把你的dm.ini文件提供一下吧。
先做个试验,排除掉下version字段数据有非规范格式的可能
查一下下面这个SQL,看结果是否为0
SELECT COUNT(1)
FROM VERSION T
WHERE REGEXP_COUNT(T.VERSION,'\.') < 3
OR REGEXP_COUNT(T.VERSION,'[^\.0-9]') > 0
OR REGEXP_COUNT(T.VERSION,'\.$') > 0
我这里测试,下面几个写法都会返回 -6803: 非法的参数数据 错误
SELECT INET_ATON('1.0.1');
SELECT INET_ATON('1.0.1.');
SELECT INET_ATON('1.0.1.A');
或者,可以在 INET_ATON 函数里加个异常处理,遇到异常则RETURN一个巨大的值,这样查询时引发问题的记录会排到前面,能比较方便的查出问题出在什么地方了。
比如:
........
RETURN O_ADDRESS_NUMBER;
EXCEPTION WHEN OTHERS THEN
RETURN 999999999;
END INET_ATON;
请提供函数定义,表定义以及样例数据,方便我们重现问题。