Oracle:无论传入什么内容,都将XML设为大写

kiayqfof  于 2022-11-22  发布在  Oracle
关注(0)|答案(1)|浏览(169)

我 正在 从 一 个 单独 的 应用 程序 接收 XML 。 我 的 Oracle 处理 程序 将 它们 拾取 并 在 FOR 循环 中 将 其 插入 Oracle 表 中 。 我 的 Oracle 代码 是 大写 的 , 如果 其他 应用 程序 与 此 大小写 不 匹配 , 它 将 不会 读取 记录 。 目前 , 我们 强制 双方 使用 相同 的 大小写 , 但 用于 将来 的 校对 - 我 是否 可以 将 传入 的 XML 转换 为 大写 , 以便 始终 读取 它 ?

FOR REC IN (SELECT XT.*
                      FROM XMLTABLE ('/UPLOAD_DATA/RECORD'
                               PASSING IN_XML
                               COLUMNS COLA VARCHAR2(30) PATH 'COLA',
                                       COLB VARCHAR2(8) PATH 'COLB',
                                       COLC VARCHAR2(8) PATH 'COLC',
                                       COLD VARCHAR2(20) PATH 'COLD'
                                       ) XT)
    LOOP

中 的 每 一 个
任何 帮助 都 很 感激 。 我 已经 在 几 个 地方 试 过 使用 UPPER , 但 还 没有 快乐 。 谢谢 。

8ehkhllq

8ehkhllq1#

这似乎不是一个好主意,但是您 * 可以 * 将XMLType转换为CLOB,大写的that,然后再转换回XMLType:

PASSING XMLTYPE(UPPER(IN_XML))

或者,您可以保持XML不变,并将所有节点名称都大写:

FROM XMLTABLE ('/*[upper-case(name())="UPLOAD_DATA"]/*[upper-case(name())="RECORD"]'
  PASSING IN_XML
  COLUMNS COLA VARCHAR2(30) PATH '*[fn:upper-case(name())="COLA"]',
          COLB VARCHAR2(8) PATH '*[fn:upper-case(name())="COLB"]',
          COLC VARCHAR2(8) PATH '*[fn:upper-case(name())="COLC"]',
          COLD VARCHAR2(20) PATH '*[fn:upper-case(name())="COLD"]'
) XT

......这是混乱的,更难维护。
fiddle使用SQL而不是PL/SQL,但应采用相同的方法。

相关问题