在数据库中我可以得到一个字符串的表达式,比如 (18+15)*20>500 
怎么在存储过程中计算它,然后返回结果呢,关键是它是一个字符串的变量,
有高手知道吗?

解决方案 »

  1.   

    可以用动态sql实现zhang@zhang>declare
      2    
      3    sql_command   varchar2(100);
      4    n        number;
      5  begin
      6    sql_command:='(18+15)*20>500';
      7    execute immediate 'select 1 from dual where '||sql_command into n;
      8    if n=1 then
      9     dbms_output.put_line(sql_command);
     10    end if;
     11  end;
     12  /
    (18+15)*20>500
      

  2.   

    在给你个例子zhang@zhang>declare
      2    
      3    sql_command   varchar2(100);
      4    n        number;
      5  begin
      6    sql_command:='(18+15)*20';
      7    execute immediate 'select '||sql_command||' from dual' into n;
      8     dbms_output.put_line(sql_command||'='||N);
      9  end;
     10  /
    (18+15)*20=660