iT邦幫忙

0

Oracle 如何實作動態Formula計算

老闆出個難題給我,他要我寫procedure實現formuala計算.
情境:
由使用者輸入公式(formula=A+B)後,計算出對應的公式值輸出如下圖表
https://ithelp.ithome.com.tw/upload/images/20190928/20103016x8yvXmeLCZ.jpg
條件
formula主要是執行4則運算.
formula 的數目由使用者定義.ex.. f1=A+B,F2=(A*3)-B等等諸如此類
請各位有經驗的前輩們幫幫忙,感謝.

nolem iT邦新手 5 級 ‧ 2019-09-29 06:25:56 檢舉
使用者除傳入公式外, 參數值存在哪?
plsql 可以用execute immediate ' (:a * :b) -:c' 然後用in out 參數傳入值或接受值.
ps: ' (:a * :b) -:c' 自然是傳入的公式字串 , 把原本的a,b,c 換成帶參數提示的a,b,c 就好....
nolem iT邦新手 5 級 ‧ 2019-09-29 06:31:11 檢舉
這裡面有用到動態plsql 可以參考看看.
https://nolem.pixnet.net/blog/post/85505708
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
cjs930
iT邦新手 5 級 ‧ 2019-09-29 15:51:21
最佳解答
declare
  l_result number;
  
  procedure get_result(p_formula varchar2,p_values out number) is
    l_sql varchar2(500);
  begin
    --組合指令
    l_sql := 'select '||p_formula ||' from dual';
    --執行指令並取得值後回傳
    execute immediate l_sql into p_values;
  exception
    when others then
      p_values := null;
  end;
begin
  --Call procedure
  get_result('3+4',l_result);
  --Dsiplay result
  dbms_output.put_line(l_result);
end;

我要發表回答

立即登入回答