如果你的意思是对输入的一个字符串的表达式求值,可以用动态SQL实现。SQL> create or replace function fun1(inexp varchar2) return number
  2  as
  3    v number;
  4  begin
  5    execute immediate 'select '||inexp||' from dual' into v;
  6    return v;
  7  end;
  8  /Function created.SQL> select fun1('2+3+4') from dual;FUN1('2+3+4')
-------------
            9

解决方案 »

  1.   

    SELECT 2*4*7 FROM DUAL;这样就可以了!
      

  2.   

    To zhpsam109(昊子鳖鳖):可能您对我提问的初衷有些理解偏差,我就是需要一个计算表达式的存储过程。如果有大量的表达式,我总不能逐个 FROM DUAL 啊。不过,还是非常感谢您的帮助。有更好的办法吗?
      

  3.   

    有了函数,可以不用select ... from dual,可以直接给变量赋值,如a:=fun1('...');