繁体   English   中英

在转换和验证Oracle SQL Table中的XMLType时需要帮助

[英]Need help in converting and validating XMLType in Oracle SQL Table

因此,这里的场景是数据从外部系统到oracle数据库。 我需要将CLOB数据类型转换为XMLTYPE并验证表中的XMLTYPE字段。 如果验证或转换失败,我需要将此记录推送到另一个表中。 我怎样才能做到这一点。

我尝试使用XMLTYPE函数和XMLISVALID函数,但是我不断收到错误消息。

您可以使用WITH FUNCTION

CREATE TABLE t(id INT, x CLOB);
INSERT INTO t(id, x) VALUES(1, '<root/>');
INSERT INTO t(id, x) VALUES(2, '<root></root>');
INSERT INTO t(id, x) VALUES(3, '<root><a></root>'); -- incorrect XML

检查列的内容是否为有效的XML:

WITH FUNCTION func(col CLOB) RETURN NUMBER
AS
  x XMLTYPE;
BEGIN
   x := XMLTYPE(col);
   RETURN 1;

   EXCEPTION WHEN OTHERS THEN
   RETURN 0;
END;
SELECT *
FROM t
WHERE func(x) = 1;  -- get only valid XML
-- WHERE func(x) = 0; -- get invalid XML

db <> fiddle演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM