--我的是10g的没问题啊 如果实在不行 你用to_char()嘛 scott@YPCOST> select '1*2+1' from dual;'1*2+ ----- 1*2+1
楼主自己把它写成字符串形式了,你这么写就行了: select 1*2+1 from dual;
-- 实在无聊的话,写个函数:eygle@SZTYORA> create or replace function cat_comp(i_str in varchar2) 2 return number 3 is 4 v_number number(18,4); 5 begin 6 execute immediate 'select '||i_str||' from dual' into v_number; 7 return v_number; 8 end; 9 /函数已创建。已用时间: 00: 00: 00.03 eygle@SZTYORA> select cat_comp('1*2+1') from dual;CAT_COMP('1*2+1') ----------------- 3已用时间: 00: 00: 00.00
-- 加个异常处理:create or replace function cat_comp(i_str in varchar2) return number is v_number number(18,4); begin execute immediate 'select '||i_str||' from dual' into v_number; return v_number; exception when others then return 0; end; /
scott@YPCOST> select '1*2+1' from dual;'1*2+
-----
1*2+1
select 1*2+1 from dual;
2 return number
3 is
4 v_number number(18,4);
5 begin
6 execute immediate 'select '||i_str||' from dual' into v_number;
7 return v_number;
8 end;
9 /函数已创建。已用时间: 00: 00: 00.03
eygle@SZTYORA> select cat_comp('1*2+1') from dual;CAT_COMP('1*2+1')
-----------------
3已用时间: 00: 00: 00.00
return number
is
v_number number(18,4);
begin
execute immediate 'select '||i_str||' from dual' into v_number;
return v_number;
exception when others
then
return 0;
end;
/