XMLATTRIBUTES (Skalarfunktion)

Die Funktion XMLATTRIBUTES konstruiert XML-Attribute aus den Argumenten.

Read syntax diagramSkip visual syntax diagramXMLATTRIBUTES( ,attribute-value-expressionASattribute-name )

Das Schema ist SYSIBM. Der Funktionsname kann nicht als qualifizierter Name angegeben werden.

Diese Funktion kann nur als Argument der Funktion XMLELEMENT verwendet werden. Das Ergebnis ist eine XML-Sequenz, die für jeden Eingabewert ungleich Null einen XQuery-Attributknoten enthält.

attributwertausdruck
Eine Ausdruck, dessen Ergebnis der Attributwert ist. Der Datentyp von attributwertausdruck kann kein XML-Typ, ein BINARY-Typ, ein VARBINARY-Typ oder ein strukturierter Typ sein (SQLSTATE 42884). Der Ausdruck kann ein beliebiger SQL-Ausdruck sein. Wenn der Ausdruck kein einfacher Spaltenverweis ist, muss ein Attributname angegeben werden.
attributname
Gibt einen Attributnamen an. Der Name ist eine SQL-Kennung, die das Format eines qualifizierten XML-Namens (QName) haben muss (SQLSTATE 42634). Weitere Informationen zu gültigen Namen finden Sie unter W3C XML namespace specifications . Der Attributname darf nicht xmlns lauten oder das Präfix xmlns: enthalten. Ein Namensbereich wird mit der Funktion XMLNAMESPACES deklariert. Doppelte Attributnamen sind nicht zulässig, weder implizit noch explizit (SQLSTATE 42713).

Wenn attributname nicht angegeben wird, muss attributwertausdruck ein Spaltenname sein (SQLSTATE 42703). Der Attributname wird über die Zuordnung mit vollständiger Zeichenersetzung aus einem Spaltennamen zu einem XML-Attributnamen erstellt.

Der Datentyp des Ergebnisses ist XML. Wenn das Ergebnis von attributwertausdruck Null sein kann, dann kann das Ergebnis Null sein. Wenn jedes Vorkommen von attributwertausdruck Null als Ergebnis hat, ist das Ergebnis der Nullwert.

Beispiele

Hinweis: XMLATTRIBUTES fügt keine Leerzeichen oder Zeilenvorschubzeichen in die Ausgabe ein. Die gesamte Beispielausgabe wurde zur besseren Lesbarkeit formatiert.
  • Beispiel 1: Element mit Attributen erzeugen.
       SELECT E.EMPNO, XMLELEMENT(
         NAME "Emp",
         XMLATTRIBUTES(
           E.EMPNO, E.FIRSTNME ||' '|| E.LASTNAME AS "name"
         )
       )
       AS "Result"
       FROM EMPLOYEE E WHERE E.EDLEVEL = 12
    Diese Abfrage führt zu folgendem Ergebnis:
    EMPNO  Result
    000290 <Emp EMPNO="000290" name="JOHN PARKER"></Emp>
    000310 <Emp EMPNO="000310" name="MAUDE SETRIGHT"></Emp>
    200310 <Emp EMPNO="200310" name="MICHELLE SPRINGER"></Emp>
  • Beispiel 2: Element mit einer Namensbereichsdeklaration erzeugen, die in keinem QName verwendet wird. Das Präfix wird in einem Attributwert verwendet.
       VALUES XMLELEMENT(
         NAME "size",
         XMLNAMESPACES(
           'http://www.w3.org/2001/XMLSchema-instance' AS "xsi",
           'http://www.w3.org/2001/XMLSchema' AS "xsd"
         ),
         XMLATTRIBUTES(
           'xsd:string' AS "xsi:type"
         ), '1'
       )
    Diese Abfrage führt zu folgendem Ergebnis:
    <size xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      xsi:type="xsd:string">1</size>