Die SET-Anweisung weisen einer Variablen einen Wert zu.
SourceExpression ist ein Ausdruck, der den zuzuweisenden Wert bereitstellt. Dabei kann es sich um einen beliebigen Ausdruck handeln, der einen Skalarwert, einen Zeilenwert oder einen Listenwert zurückgeben kann.
Handelt es sich bei dem Ziel um eine deklarierte Skalarvariable, wird SourceExpression bewertet und der Variablen zugewiesen. Falls erforderlich, wird der Wert des Quellausdrucks in den Datentyp der Variablen konvertiert. Ist diese Konvertierung nicht möglich, tritt entweder ein Fehler bei der Implementierung oder eine Ausnahme während der Laufzeit auf.
Nullwerte werden wie jeder andere Wert behandelt. Wenn der Ausdruck also einen Nullwert hat, wird der Variable der Wert "Null" zugewiesen.
Für Skalarvariablen haben die Klauseln TYPE, NAME, NAMESPACE und VALUE keine Bedeutung und sind nicht zulässig.
Handelt es sich bei dem Ziel um eine deklarierte Zeilenvariable, eine der vordefinierten Zeilenvariablen, ein Feld in einer Zeilenvariablen, eine Liste von Feldern in einer Zeilenvariablen oder um eine deklarierte Referenzvariable, die auf eines dieser Elemente verweist, ist das letzte Ziel ein Feld. In diesen Fällen wird das Zielfeld angesteuert (wobei die Felder, falls erforderlich, erstellt werden).
Wenn Array-Indizes in der TargetFieldReference (Zielfeldverweis) verwendet werden, kann die Navigation zum Zielfeld nur Felder im direkten Pfad vom Stamm- zum Zielfeld erstellen. Die nachfolgende SET-Anweisung erfordert beispielsweise, dass mindestens eine Instanz von Structure bereits in der Nachricht vorhanden ist:
SET OutputRoot.XML.Message.Structure[2].Field = ...
Weitere Informationen zur Arbeit mit Elementen des Typs list finden Sie im Abschnitt Mit Elementen des Typs xsd:: list arbeiten
SET OutputRoot = InputRoot; SET OutputRoot.XML.Order.Name = UPPER(InputRoot.XML.Order.Name);
In diesem Beispiel wird ein Feld in der Nachricht auf Großschreibung gesetzt. Die erste Anweisung erstellt eine Ausgabenachricht, die völlig identisch ist mit der Eingabenachricht. Die zweite Anweisung stellt den Wert des Feldes Auftragsname auf einen neuen Wert ein, wie von dem Ausdruck rechts angegeben.
Wenn das Feld Order.Name nicht in der Originaleingabenachricht existiert, existiert es auch nicht in der von der ersten Anweisung generierten Ausgabenachricht. Der Ausdruck rechts von der zweiten Anweisung gibt NULL zurück (da das im UPPER-Funktionsaufruf angegebene Feld nicht existiert). Wenn der NULL-Wert einem Feld zugewiesen wird, wird das Feld gelöscht, falls dieses bereits existiert, und somit hat die zweite Anweisung keine Wirkung.
SET OutputRoot.XML.Order.Name VALUE = NULL;