Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Funktionen » SQL-Funktionen (P-Z)

 

XMLELEMENT-Funktion [Zeichenfolge]

Erzeugt ein XML-Element innerhalb einer Abfrage

Syntax
XMLELEMENT( { NAME Elementnamens-Ausdruck | Zeichenfolgenausdruck }
   [, XMLATTRIBUTES ( Attributwert-Ausdruck [ AS Attributname ],... ) ]
   [, Elementinhalt-Ausdruck,... ] 
)
Parameter
  • Elementnamens-Ausdruck   Ein Bezeichner. Für jede Zeile wird ein XML-Element mit demselben Namen wie der Bezeichner erzeugt.

  • Attributwert-Ausdruck   Ein Attribut des Elementes. Mit diesem optionalen Argument können Sie einen Attributwert für das erzeugte Element angeben. Dieses Argument legt den Attributnamen und Inhalt fest. Wenn der Attributwert-Ausdruck ein Spaltenname ist, nimmt der Attributname den Spaltennamen an. Sie können den Attributnamen ändern, indem Sie das ArgumentAttributname angeben.

  • Elementinhalt-Ausdruck   Der Inhalt des Elementes. Dies kann ein beliebiger Zeichenfolgenausdruck sein. Sie können eine unbegrenzte Anzahl Elementinhalt-Ausdruck-Argumente angeben, die dann verkettet werden. Beispiel: Die folgende SELECT-Anweisung gibt den Wert '<x>abcdef</x>' zurück:
    SELECT XMLELEMENT( NAME x, 'abc', 'def' );

Rückgabe

XML

Bemerkungen

NULL-Elementwerte und NULL-Attributwerte werden nicht in das Ergebnis einbezogen. Die Groß- und Kleinschreibung für Element- und Attributnamen wird aus der Abfrage entnommen.

Der Elementeninhalt wird immer in Escapezeichen gesetzt, es sei denn, der Datentyp ist XML. Ungültige Element- und Attributnamen werden ebenfalls in Anführungszeichen gesetzt. Nehmen wir als Beispiel folgende Anweisung:

SELECT XMLELEMENT('H1', f_get_page_heading() );

Wenn die Funktion f_get_page_heading als RETURNS LONG VARCHAR oder RETURNS VARCHAR(1000) definiert ist, ist das Ergebnis HTML-kodiert:

CREATE FUNCTION f_get_page_heading() RETURNS LONG VARCHAR
   BEGIN
      RETURN ('<B>My Heading</B>');
   END;

Die obenstehende SELECT-Anweisung gibt Folgendes zurück:

<H1>&lt;B&gt;My Heading&lt;/B&gt;</H1>

Wenn die Funktion als RETURNS XML deklariert ist, gibt die obenstehende SELECT-Anweisung Folgendes zurück:

<H1><B>My Heading</B></H1>

Weitere Hinweise zum Zitieren und zur XMLELEMENT-Funktion finden Sie unter Ungültige Namen und SQL/XML.

XMLELEMENT-Funktionen können ineinander verschachtelt werden und eine Hierarchie bilden. Wenn Sie wollen, dass verschiedene Elemente auf derselben Ebene der Dokumenthierarchie zurückgegeben werden, verwenden Sie die Funktion XMLFOREST.

Weitere Hinweise finden Sie unter XMLFOREST-Funktion [Zeichenfolge].

Daten in den Spalten BINARY, LONG BINARY, IMAGE und VARBINARY werden automatisch im Base64-kodierten Format zurückgegeben, wenn Sie eine Abfrage ausführen, die eine XMLELEMENT-Funktion enthält.

Siehe auch
Standards und Kompatibilität
  • Teil des SQL/XML-Standardentwurfs

  • Das Weglassen des NAME-Schlüsselworts und die Verwendung eines Zeichenfolgenausdrucks als erstes Argument ist eine Erweiterung des Herstellers.

Beispiel

Das folgende Beispiel erzeugt ein Element <item_name> für jedes Produkt in der Ergebnismenge, wobei der Produktname der Inhalt des Elementes ist.

SELECT ID, XMLELEMENT( NAME item_name, p.Name )
FROM Products p
WHERE ID > 400;

Das folgende Beispiel gibt <A HREF="http://www.ianywhere.com/" TARGET="_top">iAnywhere web site</A> zurück:

SELECT XMLELEMENT( 
   'A',
   XMLATTRIBUTES( 'http://www.ianywhere.com/' 
      AS "HREF", '_top' AS "TARGET"),
   'iAnywhere web site'
);

Das folgende Beispiel gibt <table><tbody><tr align="center" valign="top"><td>Cell 1 info</td><td>Cell 2 info</td></tr></tbody></table> zurück:

SELECT XMLELEMENT( name "table",  
         XMLELEMENT( name "tbody", 
           XMLELEMENT( name "tr", 
             XMLATTRIBUTES('center' AS "align", 'top' AS "valign"),
             XMLELEMENT( name "td", 'Cell 1 info' ),
             XMLELEMENT( name "td", 'Cell 2 info' )
           )
         )
       );

Das folgende Beispiel gibt '<x>abcdef</x>','<custom_element>abcdef</custom_element>' zurück:

CREATE VARIABLE @my_element_name VARCHAR(200);
SET @my_element_name = 'custom_element';
SELECT XMLELEMENT( NAME x, 'abc', 'def' ),
   XMLELEMENT( @my_element_name,'abc', 'def' );