现在我将公式存在一个表中:name1+name2-name3,我在存储过程中取出这个公式用varchar保存,并且取到name1-name3这三个东西对应的数据具体值value1、value2、value3,我怎么把值带到公式中得到运算后的结果,请各位大侠指教,谢谢

解决方案 »

  1.   


    --建表
    create table t(id int,name1 varchar2(20),name2 varchar2(20),name3 varchar2(20),cal varchar2(60));
    insert into t values(1,20,30,40,'name1+name2-name3');
    --测试
    declare 
    v_sql varchar2(1000);
    v_val varchar2(60);
    v_result number;
    v_id int :=1;
    begin
    select 'select cal from t where id='||v_id into v_sql from dual;
    execute immediate v_sql into v_val;
    v_val:='select '||v_val||' from t where id='||v_id;
    execute immediate v_val into v_result;
    dbms_output.put_line('v_result:'||v_result);
    end;
    /
    --结果
    /*
    v_result:10
    */
      

  2.   

    把公式存成:name1+:name2的形式
    例如
    declare
      formula varchar2(100) := ':name1+:name2-:name3';
      sqltxt varchar2(100);
      result int;
    begin
      sqltxt := 'select ' || formula || ' from dual'; 
      execute immediate sqltxt into result using 1,2,3;
      dbms_output.put_line(result);
    end;