Ste*_*han 2 xml oracle stored-procedures xmltype
我正在使用 Oracle 的 XMLType 函数从返回游标的存储过程获取 XML 数据。我的 SQL 看起来像这样:
select
XMLType(
package_name.storedProcName('PARAM1', 'PARAM2', 'PARAM3')
) as sresult
from dual;
Run Code Online (Sandbox Code Playgroud)
在存储过程返回记录的情况下,这工作正常并且我得到了我期望的 XML 结果。但是,当该过程没有返回任何记录时,我收到以下错误:
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "SYS.XMLTYPE", line 334
ORA-06512: at line 1
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我最好返回 null、空白字符串或其他值。当然,我希望避免每次发生这种情况时都引发 Oracle 异常。我可以做什么来实现这个目标?
澄清:我的问题是,当存储过程返回空游标时,XMLType 构造函数会引发异常。如何检测 SQL 查询中的空游标?(不幸的是,我没有机会在 Oracle 端进行编程 - 我正在编写 Java 客户端。)
对于 SQL 解决方案:
select
XMLType.createxml(
package_name.storedProcName('PARAM1', 'PARAM2', 'PARAM3')
) as sresult
from dual;
Run Code Online (Sandbox Code Playgroud)
这应该可以避免构造函数错误。
例如
SQL> select xmltype.createxml(mycur(0)) from dual;
XMLTYPE.CREATEXML(MYCUR(0))
-------------------------------------------------------------------------------
SQL> select xmltype(mycur(0)) from dual;
ERROR:
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "SYS.XMLTYPE", line 334
ORA-06512: at line 1
no rows selected
x
SQL>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7715 次 |
| 最近记录: |