A instrução UPDATE altera os valores das colunas especificadas, em linhas selecionadas, em uma tabela de um banco de dados externo.
>>-UPDATE--TableReference--+----------------------+-------------> '-AS-- CorrelationName-' .-,-------------------. V | >--SET----Column = Expression-+--+-------------------+--------->< '-WHERE-- Expressão-' WHERE |--TableReference = --Banco de Dados---------------------------> >--+------------------------------------------+-----------------> '-+---------------------+--.--SchemaClause-' '-.--DataSourceClause-' >--.--TableClause-----------------------------------------------| |--DataSourceClause = --+-DataSourceName-------------+---------| '-{--DataSourceExpression--}-' |--SchemaClause = --+-SchemaName-------------+-----------------| '-{--SchemaExpression--}-' |--TableClause = --+-TableName-------------+-------------------| '-{--TableExpression--}-'
Se um nome de esquema não for especificado, será utilizado o esquema padrão para o usuário do banco de dados do broker.
Se um nome de origem de dados não for especificado, será utilizado o banco de dados apontado pelo atributo origem de dados do nó.
A expressão da cláusula WHERE pode usar qualquer um dos operadores e funções do broker em qualquer combinação. Ela pode referir-se a colunas de tabelas, campos de mensagens e quaisquer variáveis ou constantes declaradas.
Entretanto, lembre-se que o broker trata a expressão da cláusula WHERE, examinando-a e decidindo se a expressão inteira pode ser avaliada pelo banco de dados. Se puder, ela será fornecida ao banco de dados. A fim de ser avaliada pelo banco de dados, ela deve utilizar somente as funções e os operadores suportados pelo banco de dados.
Entretanto, a cláusula WHERE pode referir-se a campos de mensagens, nomes de correlação declarados por funções SELECT que os contêm e quaisquer outras variáveis ou constantes declaradas no escopo.
É possível que ocorram erros durante as operações de atualização. Por exemplo, o banco de dados pode não estar operacional ou a tabela pode ter restrições definidas que os novos valores violariam. Nestes casos, uma exceção é emitida (a menos que o nó tenha sua propriedade throw exception on database error configurada como FALSE). Essas exceções configuram os valores apropriados de código SQL, estado, erro nativo e texto de erro e podem ser tratadas por rotinas de tratamento de erro (consulte a instrução DECLARE HANDLER).
Para obter informações adicionais sobre como manipular erros do banco de dados, consulte Capturando o Estado do Banco de Dados.
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;
Observe que os nomes das colunas (à esquerda do "=") são identificadores únicos. Eles não devem ser qualificados com um nome de tabela ou nome de correlação. Em contraste, as referências às colunas do banco de dados nas expressões (à direita do "=") devem ser qualificadas com o nome de correlação.
-- Declarar variáveis para conter os nomes de origem de dados, esquema e tabela
-- e configurar seus valores padrão
DECLARE Source CHARACTER 'Production';
DECLARE Schema CHARACTER 'db2admin';
DECLARE Table CHARACTER 'DynamicTable1';
-- O código que calcula seus valores reais fica aqui
-- Atualizar linhas na tabela
UPDATE Database.{Source}.{Schema}.{Table} AS R SET Value = 0;