Em outro “post” escrevi sobre obter o código do cliente gerado automático pelo banco e como retornar o seu valor usando “returning”.
Há situações que é necessário confirmar se uma operação foi aceita pelo banco (sem erro), e que de fator a linha foi inserida, alterada ou excluída do banco de dados.
Depois de submeter um comando de Insert, Update ou Delete para o banco pode-se adotar algumas estratégias para saber se houve sucesso:
- usar um Try/Exception para capturar uma exceção. Se o comando retornou uma exceção significa que o banco de dados criticou o comando. De outro lado há comandos que mesmo não retornando nenhum exceção NÃO garante que conseguiu fazer… ex: envia um update e não encontra o registro – não gera exceção, mas também não fez;
- usar a propriedade RowsAffected para ler quantas linhas foram afetadas pelo último comando executado.
RowsAffected = 0 -> não efetuou nenhuma alteração; RowsAffected = -1 -> quando a operação não suporta ou o banco de dados não suporta obter retorno; RowsAffected > 0 -> número de linhas que foram alteradas;
Exceção: No MS-SQLServer há situações que o retorno é -1 em decorrência deste recurso ser desligado em triggers ou procedure quando omite o comando: SET NOCOUNT ON
Exemplo:
Query1.sql.text := ‘update clientes set fone = ‘xxxx-xxxx’ where codigo=1′;
Query1.execSql;
if Query1.RowsAffected>0 then
showMessage(‘Sucesso’);
Muito bom, obrigado mais uma vez por suas dicas.