Eu preciso fazer um update em um banco de dados mas o valor a ser atualizado precisa ser multiplicado pelo valor de um campo do mesmo registro. Em SQL fica assim:
update linha set taxafalha = comprimento*txFalha/1000, temporeparo = trReparo;
ou seja, o valor do campos taxafalha precisa ser multiplicado pelo valor campo comprimento da mesma linha, pelo valor do parâmetro txFalha e dividido por 1000. Tentei fazer diretamente em SQL mas recebi como msg que preciso usar o HQL. Para o resto da consulta não tem problema. Sem a conta tb funciona, com o seguinte código:
Não entendi uma coisa… na sua duvida vc queria taxaFalha = comprimento * taxaFalha / 1000, sendo que taxaFalha e comprimento eram campos do banco de dados.
Como não existia clausula where, entendi que todas as linhas da tabela seria atualizadas, sendo que para cada registro seria utilizado a taxaFalha e comprimento correspondentes.
Na solução você esta passando taxaFalha e comprimento como parametros, logo todos os registros da tabela serão atualizados utilizando os mesmos falores de taxaFalha e comprimento… é isso mesmo ?
Esta função faz parte de um sistema para cálculo de confiabilidade de sistemas elétricos. Ao executar uma simulação, eu leio em uma janela o valor de uma taxa de falha e de um tempo de reparo. O problema é que a taxa de falha de uma linha de transmissão é fornecida por Km. No cadastro inicial do BD, eu coloco um valor qq pra taxa de falha mas o comprimento correto para a linha que é um dado que eu conheço. Em função do tipo de linha de transmissão a ser usada em uma simulação, o usuário define o valor da taxa de falha por Km, e eu preciso alterar todas as linhas do BD em função deste valor e do valor do comprimento de cada linha que eu já tenho cadastrado, pois utilizo o valor da taxa de falha em alguns cálculos. Ficou meio complicada a explicação… Deu pra entender?
A solução que eu apresentei com o SQL fucionou, mas vc sabe se tem alguma maneira de fazer a mesma coisa com HQL? Tem jeito de definir o valor de um parâmetro, sendo que este valor é calculado em função da multiplicação do parâmetro passado a função por um campo da mesma linha que será alterada?