Search code examples
db2sqlxml

XMLQUERY() WITHIN XMLATTRIBUTES()


I am doing some basic tasks using, sql/xml. I am currently working on an error message that I get when trying to compute a XMLQUERY() within a XMLATTRIBUTES() function. (See code below)

SELECT XMLELEMENT(NAME "Nodename",
       XMLATTRIBUTES(XMLQUERY('$t//Element/text()' PASSING Info AS "t") AS "hello"))
FROM Kurs

The error message that I get, says that there is no qualified routine that can run the function. I cant copy-paste the error message because its in Swedish, but this should be enough.

Also this might help: SQLCODE=-440, SQLSTATE=42884, DRIVER=4.18.60

So my question is (I have been looking for the answer), why doesn't this work? I will always get a value from that XMLQUERY, and it should simply translate into a value and used by XMLATTRIBUTES()

Any documentation, or link, is welcomed as well!

Thank you in advance!


Solution

  • The scalar function XMLQUERY returns an XML value. The function XMLATTRIBUTES expects an expression that returns a value of any type, but XML and some other types.

    Thus, the functions are not compatible the way you are using them. DB2 cannot find a routine with that function signature. It results in that error -440.

    How about wrapping a CAST/XMLCAST around it...?