SET 语句给变量赋值。
SourceExpression 是一个表达式,它提供要赋给变量的值。它可以是任何种类的表达式,可以返回标量、行或列表值。
如果目标是声明的标量变量,则对 SourceExpression 求值,并将求值结果赋给此变量。如果需要,则将它的值转换为此变量的数据类型。如果无法进行这种转换,将在部署时发生错误或在运行时发生异常。
null 值的处理方法与其他值完全相同。即,如果表达式的求值结果为 null,则将值“null”赋给变量。
TYPE、NAME、NAMESPACE 和 VALUE 子句对标量变量没有意义,不允许使用。
如果目标是声明的行变量,某个预定义的行变量、任何种类行变量中的字段、任何种类行变量中的字段列表或声明的指向这些项中任何一项的引用变量,则最终目标是字段。在这些情况中,会浏览到目标字段(必要时创建字段)。
如果 TargetFieldReference 中使用了数组下标,则浏览到目标字段只能在从根到目标字段的直接路径上创建字段。例如,以下 SET 语句要求消息中至少存在一个 Structure 实例。
SET OutputRoot.XML.Message.Structure[2].Field = ...
有关使用 list 类型元素的更多信息,请参阅处理 xsd:: list 类型的元素
SET OutputRoot = InputRoot; SET OutputRoot.XML.Order.Name = UPPER(InputRoot.XML.Order.Name);
此示例将消息中的一个字段变成大写。第一条语句构造输出消息,它是输入消息的完整副本。第二条语句将 Order.Name 字段的值设置为右边表达式定义的新值。
如果原始输入消息中不存在 Order.Name 字段,第一条语句生成的输出消息中也不会存在。第二条语句右边的表达式将返回 NULL(因为 UPPER 函数调用中引用的字段不存在)。将 NULL 值赋给已存在的字段会导致此字段被删除,从而使第二条语句没作用。
SET OutputRoot.XML.Order.Name VALUE = NULL;