none
Como obter retorno ao deletar um registro RRS feed

  • Pergunta

  • Olá,

     

    Como faço para obter um retorno após deletar um registro.

     

    Delete from tabela

    where condicao = @condicao

     

    Se o regsitro for deletado com sucesso, preciso voltar alguma informação para que seja capturada pelo programa. Por ex. em um select, posso retornar zero ou o número de regsitros afetados pelo select. Quero fazer o mesmo no delete

     

    Alguma dica ?????

     

    Obrigado.

    segunda-feira, 25 de agosto de 2008 13:11

Respostas

  • Gilberto,

     

    É possível sim, você fazer isso utilizando uma trigger associada no evento de exclusão, e utilizando a system variable @@Errror, ou um bloco Try..Catch, veja abaixo o exemplo:

     

    Code Snippet

     

    Create Table Teste

    (Codigo Int)

    Insert Into Teste Values (1)

    Insert Into Teste Values (2)

    Insert Into Teste Values (3)

    Insert Into Teste Values (4)

     

    Create Trigger T_Deletar

    On Teste

    After Delete

    As

    Begin

     If @@Error= 0

      RAISERROR ('Registro Excluído com sucesso!!!', 16, 1)

     Else

      RAISERROR ('Falha na exclusão!!!', 16, 1)

    End

     

    Delete from Teste

    Where Codigo=1

     

     

     

    segunda-feira, 25 de agosto de 2008 13:26
  • Bom Dia,

     

    Rode o DELETE e em seguida o @@rowcount. Se o @@rowcount der zero nada foi excluído. Se o @@rowcount for maior que zero, o valor retornado será a quantidade de registros excluídos. Não há como testar se o registro foi excluído ou não. O DELETE irá fazer a exclusão e a menos que ele não consiga, uma mensagem de erro será de fato enviada

     

    [ ]s,

     

    Gustavo

    segunda-feira, 25 de agosto de 2008 13:53

Todas as Respostas

  • Bom Dia,

     

    Rode o comando SELECT @@rowcount para obter o número de linhas afetadas.

     

    [ ]s,

     

    Gustavo

    segunda-feira, 25 de agosto de 2008 13:22
  • Gilberto,

     

    É possível sim, você fazer isso utilizando uma trigger associada no evento de exclusão, e utilizando a system variable @@Errror, ou um bloco Try..Catch, veja abaixo o exemplo:

     

    Code Snippet

     

    Create Table Teste

    (Codigo Int)

    Insert Into Teste Values (1)

    Insert Into Teste Values (2)

    Insert Into Teste Values (3)

    Insert Into Teste Values (4)

     

    Create Trigger T_Deletar

    On Teste

    After Delete

    As

    Begin

     If @@Error= 0

      RAISERROR ('Registro Excluído com sucesso!!!', 16, 1)

     Else

      RAISERROR ('Falha na exclusão!!!', 16, 1)

    End

     

    Delete from Teste

    Where Codigo=1

     

     

     

    segunda-feira, 25 de agosto de 2008 13:26
  • Gilberto,

     

    Desculpe, eu entendi que você queria obter uma informação e não o número de linhas excluídas, mas mesmo assim da para utilizar o meu exemplo, fazendo uma pequena melhoria.

     

    segunda-feira, 25 de agosto de 2008 13:32
  • Junior,

     

    Eu me expressei mal na verdade, preciso saber se o regsitro indicado pelo parâmetro @Condicao, foi deletado.

     

    Obrigado. 

     

    segunda-feira, 25 de agosto de 2008 13:36
  • Gilberto,

     

    Seria o caso de verificar se o registro existe na table, caso o mesmo não exista será necessário retornar uma mensagem.

     

    É isso?

     

    segunda-feira, 25 de agosto de 2008 13:41
  • Junior,

     

    A idéia é a seguinte eu poderia enviar um DELETE para excluir o regsitro e a seguir um SELECT nesse mesmo regsitro pra saber se ele existe ou não correto mas já que eu envio e DELETE, gostaria de saber se existe alguma forma de testar no próprio delete se o registro foi excluído ou não fazendo isso(se for possível claro), eu evitaria ter que enviar o select para testar a existência do referido registro.

     

    Obrigado.

     

    segunda-feira, 25 de agosto de 2008 13:46
  • Bom Dia,

     

    Rode o DELETE e em seguida o @@rowcount. Se o @@rowcount der zero nada foi excluído. Se o @@rowcount for maior que zero, o valor retornado será a quantidade de registros excluídos. Não há como testar se o registro foi excluído ou não. O DELETE irá fazer a exclusão e a menos que ele não consiga, uma mensagem de erro será de fato enviada

     

    [ ]s,

     

    Gustavo

    segunda-feira, 25 de agosto de 2008 13:53
  • OK...Pessoal...Problema resolvido com a sugestão de vocês.

     

    Obrigado.

     

    segunda-feira, 25 de agosto de 2008 20:52