L'istruzione SET assegna un valore ad una variabile.
SourceExpression è un'espressione che fornisce il valore da assegnare. Può essere qualsiasi tipo di espressione e può restituire un valore scalare, row o list.
Se la destinazione è una variabile scalare dichiarata, SourceExpression viene valutata ed assegnata alla variabile. Se necessario, il relativo valore viene convertito nel tipo di dati della variabile. Se tale conversione non è possibile, viene rilevato un errore al momento della distribuzione o viene generata un'eccezione al runtime.
I valori null sono gestiti allo stesso modo di qualsiasi altro valore. Se il valore dell'espressione è null, alla variabile viene assegnato il valore "null".
Per le variabili scalari, le clausole TYPE, NAME, NAMESPACE e VALUE non hanno significato e non sono consentite.
Se la destinazione è una variabile row dichiarata, una delle variabili row predefinite, un campo all'interno di qualsiasi tipo di variabile row, un elenco di campi all'interno di qualsiasi tipo di variabile row oppure una variabile di riferimento dichiarata che punta ad uno di tali elementi, l'ultima destinazione è un campo. In tali casi, viene eseguita la navigazione al campo di destinazione (creando i campi, se necessario).
Se vengono utilizzati gli indici di array in TargetFieldReference, la navigazione al campo di destinazione può creare campi solo sul percorso diretto dalla root al campo di destinazione. Ad esempio, l'istruzione SET riportata di seguito richiede l'esistenza nel messaggio di almeno una istanza di Structure:
SET OutputRoot.XML.Message.Structure[2].Field = ...
Per ulteriori informazioni relative all'utilizzo degli elementi di tipo list, consultare Utilizzo degli elementi di tipo xsd:: list
SET OutputRoot = InputRoot; SET OutputRoot.XML.Order.Name = UPPER(InputRoot.XML.Order.Name);
Questo esempio converte in maiuscolo un campo nel messaggio. La prima istruzione crea un messaggio di output che è una copia completa del messaggio di input. La seconda istruzione imposta il valore del campo Order.Name su un nuovo valore, come definito dall'espressione a destra.
Se il campo Order.Name non esiste nel messaggio di input originario, non esiste nel messaggio di output generato dalla prima istruzione. L'espressione a destra della seconda istruzione restituisce NULL (perché il campo indicato all'interno della chiamata alla funzione UPPER non esiste). L'assegnazione di un valore NULL ad un campo elimina il campo se il campo esiste, per cui la seconda istruzione non ha alcune effetto.
SET OutputRoot.XML.Order.Name VALUE = NULL;