在Db2中使用XMLCAST函数时,我总是得到一个空值。但是当使用普通函数调用时,它返回xml格式的值...如下所示,查询正确的xml数据即将到来。函数Getdatavalue返回xml数据类型。使用Linux 8.2和db2 11.5
db2 "select sample.Getdatavalue(1,4504)) from sysibm.sysdummy1"
在上面的结果中,我们在输出XML中有一些双引号。
但是一旦我们使用了xmlcast函数,它将返回null.i的十六进制值,使用MD5散列机制。
db2 "select HEX(HASH(xmlcast(sample.Getdatavalue(1,4504) as varchar(32672)),0)) as hash_val from sysibm.sysdummy1";
甚至有一次我尝试不使用哈希,它返回以下查询的空结果。它看起来xmlcast不工作。
db2 "select xmlcast(sample.Getdatavalue(1,4504) as varchar(32672)) as hash_val from sysibm.sysdummy1";
有什么方法可以将XML数据类型转换为clob或varchar吗?
Getdatavalue的主体为:
CREATE FUNCTION sample.Getdatavalue (v1 smallint, v2 integer)
RETURNS xml
LANGUAGE SQL
BEGIN ATOMIC
DECLARE v_Data xml;
set v_Data = (SELECT XMLELEMENT( NAME "rt_ky_cmpnnt",
XMLAGG(XMLELEMENT(NAME "rt", XMLAttributes(rt.rt_field_add_val AS
"rt_add_val",
rt.rt_name AS
"rt_name",
rt.rt_name AS
"rt_name",
rt.rt_val1 AS "rt_val1",
rt_lim AS "rt_lim",
rt.rt_val2 AS "rt__val2",
rt.rt_whole_val AS "rt_whole_val" ))order by
rf.rt_num asc)OPTION null ON NULL)
FROM sample.cmpnnt_val rt inner join sample.field_val rf
on rf.abc=rt.abc
and rf.pqr=rt.pqr
and rt.xyz=rf.xyz
where rt.abc = v1
AND rt.bcd = v2 );
RETURN v_Data;
END!
谁能解释一下如何处理xmlcast?
1条答案
按热度按时间gijlo24d1#
要从XML值检索字符串,请使用函数XMLSERIALIZE。
XMLSERIALIZE函数返回从XML-expression参数生成的指定数据类型的序列化XML值。