Oracle表达式求值,有这样的内置包可用吗?

boydgmx 2005-12-22 10:14:11
如题,是不是有这样一个包的方法:

SELECT DBMS_xxx.get_value('2*4*7') FROM DUAL;

得到结果 56

SELECT DBMS_xxx.get_value('2+4+7') FROM DUAL;

得到结果 13

---------
如果没有,有什么简洁的办法?
...全文
196 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
boydgmx 2005-12-22
  • 打赏
  • 举报
回复
To zhpsam109(昊子鳖鳖):

可能您对我提问的初衷有些理解偏差,我就是需要一个计算表达式的存储过程。如果有大量的表达式,我总不能逐个 FROM DUAL 啊。

不过,还是非常感谢您的帮助。有更好的办法吗?
zhpsam109 2005-12-22
  • 打赏
  • 举报
回复
SELECT 2*4*7 FROM DUAL;

这样就可以了!
wumugulu 2005-12-22
  • 打赏
  • 举报
回复
楼上的果然高~~~
bobfang 2005-12-22
  • 打赏
  • 举报
回复
如果你的意思是对输入的一个字符串的表达式求值,可以用动态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
bobfang 2005-12-22
  • 打赏
  • 举报
回复
有了函数,可以不用select ... from dual,可以直接给变量赋值,如a:=fun1('...');
sduzjw 2005-12-22
  • 打赏
  • 举报
回复
三楼的已经够简洁的了吧
boydgmx 2005-12-22
  • 打赏
  • 举报
回复
写存储过程的方式我也想过,只是想知道有没有更好更简洁的思路。再等高手几天。。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧