viernes, 6 de junio de 2025

WHEN EXCEPTION IN

 PROCEDURE ValeurChamp(sNomChamp)
WHEN EXCEPTION IN
 RETURN (sNomChamp)
DO
 IF ExceptionInfo(errCode) = ExIDInconnu THEN 
RETURN ""
End 
END

/////////////
// Procedure : InserirClienteComTransacao
// Objetivo  : Inserir cliente e endereço com transação segura
// Autor     : Adriano Boller - WX Soluções
// --------------------------------------------------
PROCEDURE InserirClienteComTransacao()

// Dados de exemplo
sNome        is string = "Maria Silva"
sEmail       is string = "maria@exemplo.com"
sEndereco    is string = "Rua Exemplo, 123"
sCidade      is string = "Curitiba"

TRY
   // Inicia transação
   HTransactionStart()

   // Inserir cliente
   cliente.Nome  = sNome
   cliente.Email = sEmail

   IF NOT HAdd(cliente) THEN
      ExceptionThrow(HError()) // dispara erro se falhar
   END

   // Inserir endereço (relacionado ao cliente recém-inserido)
   endereco.IDCliente = HRecNum(cliente)
   endereco.Logradouro = sEndereco
   endereco.Cidade     = sCidade

   IF NOT HAdd(endereco) THEN
      ExceptionThrow(HError())
   END

   // Se tudo deu certo, confirmamos a transação
   HTransactionCommit()
   Info("Cliente e endereço inseridos com sucesso!")

CATCH(ErroTransacao)
   // Se qualquer erro acontecer, desfaz tudo
   HTransactionCancel()
   Error("Erro ao inserir dados: " + InterpretarErroHFSQL(ErroTransacao))
END

No hay comentarios.:

Publicar un comentario

Try catch end

 // -------------------------------------------------- // Procedure principal que executa uma query com tratamento de exceção // -----------...