UPDATE 语句更改外部数据库的表中的选定行中指定列的值。
如果未指定模式名称,则使用代理的数据库用户的缺省模式。
如果未指定数据源名称,则使用节点的 data source 属性指向的数据库。
WHERE 子句表达式可以使用代理的任何运算符和函数的任何组合。这些表达式可以引用表列、消息字段以及任何声明的变量或常量。
但是,代理检查 WHERE 子句表达式并确定整个表达式是否能被数据库求值来处理该表达式。如果可以,就将此表达式交给数据库。为了能被数据库求值,表达式必须只使用数据库支持的函数和运算符。
更新操作过程中可能会发生错误。例如,数据库可能不可操作,或者表上可能定义了新值将违例的约束。在这些情况下,除非节点将其数据库发生错误时抛出异常属性设置为 FALSE,否则将抛出异常。这些异常设置相应的 SQL 代码、状态、本机错误和错误文本值,并且可以由错误处理程序来处理(请参阅 DECLARE HANDLER 语句)。
有关处理数据库错误的更多信息,请参阅捕获数据库状态。
UPDATE Database.StockPrices AS SP SET PRICE = InputBody.Message.StockPrice WHERE SP.COMPANY = InputBody.Message.Company
UPDATE Database.INVENTORY AS INV SET QUANTITY = INV.QUANTITY - InputBody.Message.QuantitySold WHERE INV.ITEMNUMBER = InputBody.Message.ItemNumber
UPDATE Database.table AS T SET column1 = T.column1+1, column2 = T.column2+2;
注意:列名(在“=”的左边)是单个标识。它们不得用表名或相关名限定。相反,表达式(在“=”的右边)中对数据库列的引用必须用相关名限定。
-- Declare variables to hold the data source, schema and table names -- and set their default values DECLARE Source CHARACTER 'Production'; DECLARE Schema CHARACTER 'db2admin'; DECLARE Table CHARACTER 'DynamicTable1'; -- Code which calculates their actual values comes here -- Update rows in the table UPDATE Database.{Source}.{Schema}.{Table} AS R SET Value = 0;