oracle里如何动态执行字符串,如'2*8*0.2'  

解决方案 »

  1.   

    select '2' || '*' || '8' || '*' || '0.2' from dual;
      

  2.   

    到ITPUB上去搜一下,我记得有高手用正则表达式实现的。
      

  3.   

    DECLARE
      L_N NUMBER;
    BEGIN
      EXECUTE IMMEDIATE 'select ' || '2*8*0.2' || ' FROM dual'
        INTO L_N;
      DBMS_OUTPUT.PUT_LINE(L_N);
    END;
    /输出: 3.2
      

  4.   

    select to_number('2*8*0.2') from dual;
      

  5.   

    to blueskywide你的两个方法都不行啊求 2*8*0.2的计算结果啊
      

  6.   

    select 2*8*0.2 from dual;
      

  7.   

    SQL> declare
      2   formula varchar2(100);
      3   mysql varchar2(100);
      4   res varchar2(100);
      5  begin
      6   formula := '1+2*3/4';
      7    mysql := 'select ' || formula || ' from dual';
      8    execute immediate mysql into res;
      9    dbms_output.put_line(res);
     10    end ;
     11  /
    2.5PL/SQL 过程已成功完成。
      

  8.   


    /--LZ可以告诉你使用的环境,如是在Oracle开发中可以使用上面已提供的方法;
    /--如在界面程序中使用,则可使用number临时变量(两两相乘,如是3个变量的话,先使前两数相乘得积后,与第3数再乘)来处理。SQL> select to_number('2')*to_number('8')*to_number('0.2') from dual;TO_NUMBER('2')*TO_NUMBER('8')*
    ------------------------------
                               3.2SQL>/--楼主也可以编一个小函数:输入:v1 varchar2(8),v2varchar2(8),输出为两字符串之积,类型为number(12,2)。
    /--使用此函数可以递归调用若干个字符串。