XMLSerialize不是本机PL/SQL函数。
Many SQL functions can be called directly in PL/SQL
,例如
to_date()
不幸的是,这不是其中之一。(事实上,我不认为任何与XML相关的函数都可以)。
在PL/SQL表达式中,可以使用所有SQL函数,除了:
...
-
XML函数(例如
APPENDCHILDXML
和
EXISTSNODE
)
不能使用直接赋值,因此需要使用查询:
CREATE OR REPLACE FUNCTION castField_xml_to_clob (xmlField IN XMLTYPE)
RETURN CLOB
AS
result CLOB;
BEGIN
SELECT XMLSERIALIZE(CONTENT xmlField AS CLOB NO INDENT)
INTO result
FROM dual;
RETURN result;
END;
/
Function CASTFIELD_XML_TO_CLOB compiled
这会添加另一个上下文开关,因此除非您试图在一个公共位置控制所有格式化XML的缩进选项,以便可以在一个位置对它们进行更改,否则我不确定这是否比直接调用XMLSerialize(无论您将在何处调用此UDF)有任何好处。