从 pl/sql 中超过 4000 个字符的 Varchar 转换为 XMLTYPE

use*_*396 5 sql oracle

我遇到一个问题,需要将超过 4000 个字符的字符串转换为 XMLTYPE。我尝试使用

XMLTYPE.CREATEXML("MY STRING")
XMLTYPE("MY STRING")
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我都收到“字符串文字太长......”错误。

psa*_*j12 2

我们可以仅传递 xml 格式的数据来创建 XMLTYPE 实例,并使用 CLOB 传递字符串值,然后使用 EXTRACTVALUE 函数检索数据

DECLARE 
str CLOB;
x XMLTYPE;
y CLOB:='<TEXT>MY STRING</TEXT>';
BEGIN
x:= XMLTYPE.CREATEXML(y);
select to_clob(extractvalue(x,'/TEXT')) into str FROM DUAL;
dbms_output.put_line(str);
END;
Run Code Online (Sandbox Code Playgroud)

请查看链接XMLTYPE ExamplesXMLTYPE Documantation以获取更多实际示例