用一条sql恐怕办不到。
你可以使用一个过程来获取这个结果。

解决方案 »

  1.   

    我现在用VC把数据取回处理,数据量比较大,所以速度很慢。
    我不是很熟悉plsql,不知道如何处理字符串,请大家指点迷津。
      

  2.   

    create or replace procedure cal(result out number)
      cursor c is select param,value from t_parameter;
      s varchar2(1000);
      sqlstr varchar2(1100);
    begin
      select formstring into s from t_formula;
      for c1 in c loop
        s:=replace(s,c1.param,c1.value);
      exit loop;
      sqlstr:='select '||s||' into result from dual';
      execute immediate sqlstr;
    end;
      

  3.   

    经更改以上过程正确编译通过
    CREATE OR REPLACE procedure cal(result out number) as
      cursor c is select param,value from F_param;
      s varchar2(1000);
      c1 c%rowtype;
    begin
      select formstring into s from F_formula;
      for c1 in c loop
        s:=replace(s,c1.param,c1.value);
      end loop;
       execute immediate 'SELECT '||s|| 'FROM DUAL' into result;
    end;
    /