这个需要存储过程把
大致就是
不断replace
最后做个拼个动态sql
执行一下.
ps:如果你用pb的话
会简单很多。

解决方案 »

  1.   

    个人认为还是写java过程让oracle来调用比较好……楼下的意见呢?
      

  2.   

    个人认为还是写java过程让oracle来调用比较好……楼下的意见呢?
      

  3.   

    create or replace function f_getvalue return number is
      myResult number;
       a number(4);
      b number(5);
      c number(3);
    begin
     
      a:=1;
      b:=3;
      c:=6;
      select a+b+c into myresult from dual;
      return(myResult);
    end f_getvalue;但愿能给lz的启发
      

  4.   

    create function f_Formula (
    ps_f varchar2,
    pn_a number,
    pn_b number,
    pn_c number
    ) return number is
    vn_o number;
    vs_sql varchar2(800);
    begin
    vs_sql := '
    declare
    a number;
    b number;
    c number;
    begin
    a := :a;
    b := :b;
    c := :c;
    :o := '||ps_f||';
    end;
    ';
    EXECUTE IMMEDIATE vs_sql
    USING pn_a, pn_b, pn_c, OUT vn_o;
    return(vn_o);
    end f_Formula;
      

  5.   

    SELECT f_formula('a+b/c',1,2,3) FROM dual--结果 1.66666666666667
      

  6.   

    一楼的办法可行,二楼的想法不错。
    这个问题是需要动态SQL来处理了。因为需要把a,b,c转换成传入的值。
      

  7.   

    不好意思哦! 前几天不能上网! 已经找到解决方法了!
    我用的是C#.net