ミュテーターSET句は、STRUCTURED型の列を更新するための構文を提供します。ミュテーターSET句は、STRUCTURED型UDT列を更新するためだけに使用できます(ミュテーターSET句内に指定されたcolumn_nameは、STRUCTURED型UDT列と一致する必要があります。)。指定する各ミュテーター メソッド名は、関連するSTRUCTURED型の値の有効なミュテーター メソッド名でなければなりません。
ミュテーター メソッド名は、変更する属性名と同じ名前です。ミュテーターSET句内では、属性名に続く括弧は無効です。
ミュテーターSET句に対して、1つの追加の制約があります。
次の例について考えてみます。
SET mycol.R = x, mycol.y = mycol.R() + 3
Vantageの実装どおりに、式内の列参照は、行が更新される前に行内の列の値を参照します。システムは、例の2つの句を、以下の単一の等価式に変換します。
mycol = mycol.R(x).y(mycol.R() + 3)
これは、ANSI SQL:2011規格からの逸脱です。
ANSI SQL:2011規格によれば、2番目の例の、ミュテーターSET句の等価式でのmycolへの列参照は、ミュテーターSET句の最初の等価式(xの代入)から加えられた変更を反映する必要があります。
2つの等価式は、以下の単一の等価式に変換されます。
mycol = mycol.R(x).y(mycol.R(x).R() + 3)