PROCEDURE ValeurChamp(sNomChamp)
WHEN EXCEPTION IN
RETURN (sNomChamp)
DO
IF ExceptionInfo(errCode) = ExIDInconnu THEN
RETURN ""
End
END
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