A instrução DELETE FROM exclui linhas de uma tabela em um banco de dados externo, com base em uma condição de procura.
>>-DELETE--FROM--TableReference--+----------------------+-------> '-AS-- CorrelationName-' >--+-------------------+--------------------------------------->< '-WHERE-- Expressão-' WHERE |--TableReference = --Banco de Dados---------------------------> >--+------------------------------------------+-----------------> '-+---------------------+--.--SchemaClause-' '-.--DataSourceClause-' >--.--TableClause-----------------------------------------------| |--DataSourceClause = --+-DataSourceName-------------+---------| '-{--DataSourceExpression--}-' |--SchemaClause = --+-SchemaName-------------+-----------------| '-{--SchemaExpression--}-' |--TableClause = --+-TableName-------------+-------------------| '-{--TableExpression--}-'
Todas as linhas para as quais a expressão da cláusula WHERE é avaliada como TRUE são excluídas da tabela identificada por TableReference.
Cada linha é examinada sucessivamente e uma variável é configurada para apontar para a linha atual. Normalmente, a expressão da cláusula WHERE utiliza essa variável para acessar valores de colunas e, por conseguinte, fazer com que as linhas sejam retidas ou excluídas de acordo com o conteúdo. A variável é referida por CorrelationName ou, na ausência de uma cláusula AS, por TableName.
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 exclusão. Por exemplo, o banco de dados pode não estar operacional. 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.
DELETE FROM Database.SHAREHOLDINGS AS S
WHERE S.ACCOUNTNO = InputBody.AccountNumber;
Este exemplo remove todas as linhas da tabela SHAREHOLDINGS em que o valor na coluna ACCOUNTNO (na tabela) é igual àquele no campo AccountNumber na mensagem. Esta operação pode excluir zero, uma ou mais linhas da tabela.
-- 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
-- Excluir linhas da tabela
DELETE FROM Database.{Source}.{Schema}.{Table} As R WHERE R.Name = 'Joe';