注册

在匿名块和查询语句中调用自定义函数,函数异常处理返回SQLERRM信息不一致

Hanson.T 2024/08/05 370 3 已解决

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:--03134284194-20240703-234060-20108 Pack1
【操作系统】:WIN10
【CPU】:X64
【问题描述】*:
在自定义函数的异常处理代码输出或返回SQLERRM信息,从匿名块和SELECT语句中调用该函数时,得到的异常信息内容不一致,且不同版本的情况有所差异。

测试内容如下:

--测试函数 CREATE OR REPLACE FUNCTION F_TEST_EX(V_TABNAME VARCHAR2) RETURN VARCHAR2 AS V_RET VARCHAR2(100); BEGIN EXECUTE IMMEDIATE 'SELECT DUMMY FROM '||V_TABNAME INTO V_RET; RETURN V_RET; EXCEPTION WHEN OTHERS THEN --返回或打印输出SQLERRM,效果一致 RETURN SQLERRM; --PRINT(SQLERRM); --RETURN NULL; END; --测试匿名块 DECLARE V_DAT VARCHAR2(100); BEGIN V_DAT := F_TEST_EX('DUAL1'); PRINT(V_DAT); END; --测试查询语句 SELECT F_TEST_EX('DUAL1');

测试结果如下:

--版本查询语句 SELECT ID_CODE,BUILD_VERSION FROM V$INSTANCE; 20240703版本 --03134284194-20240703-234060-20108 Pack1 1-3-162-2024.07.03-234060-20108-ENT 匿名块返回:无效的表或视图名[DUAL1] 查询语句返回:[0]:执行成功 20240321版本 --03134284172-20240321-222308-20093 1-3-140-2024.03.21-222308-20093-ENT 匿名块返回:无效的表或视图名[DUAL1] 查询语句返回:执行成功 20230726版本 --03134284058-20230726-197096-20046 Pack4 1-3-26-2023.07.26-197096-20046-ENT 匿名块返回:无效的表或视图名[DUAL1] 查询语句返回:无效的表或视图名[DUAL1]

对比结果内容可见,20230726版本是正确的,匿名块和查询语句能够获得到相同的错误信息,而2024的两个版本则有差异
方便的话还请核实,或指点一下调用方式的问题所在。

多谢。

回答 0
暂无回答
扫一扫
联系客服