Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

fórmula matemática armazenada mysql/oracle


Acho que o que você está dizendo é que deseja que o banco de dados analise a string da fórmula. Por exemplo, para Oracle você pode
  • Adicione uma coluna à tabela para conter o resultado

  • Execute uma instrução de atualização que chamaria uma função PL/SQL com os valores das colunas na tabela e o texto da fórmula

    atualizar {tabela} set formula_result =fn_calc_result (col1, col2, formula_column);

A função PL/SQL criaria uma string substituindo "col1" e "col2" e assim por diante pelos valores reais dessas colunas. Você pode fazer isso com expressões regulares, desde que as fórmulas sejam escritas de forma consistente.

Então use
execute immediate 'select '||{formula}||' from dual' into v_return;
return v_return;

para calcular o resultado e devolvê-lo.

Claro, você também pode escrever seu próprio analisador. Se você decidir seguir esse caminho, não se esqueça de lidar com a precedência da operação, parênteses e assim por diante.