xmlcast在Db2中返回空值

xe55xuns  于 2023-01-26  发布在  DB2
关注(0)|答案(1)|浏览(246)

在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?

gijlo24d

gijlo24d1#

要从XML值检索字符串,请使用函数XMLSERIALIZE
XMLSERIALIZE函数返回从XML-expression参数生成的指定数据类型的序列化XML值。

相关问题