ORACLE 计算出数值表达式的值

alexwu1029 2011-04-08 02:15:08
在ORACLE中,
我现在有一个表达式,比如是‘1+2*3’
我想用一个变量接收这个表达式的值,请问是用什么办法啊?
我现在接收到的值就一直是这个表达式,而不能取到值
...全文
183 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
alexwu1029 2011-04-12
  • 打赏
  • 举报
回复
感谢大家的关注,这个问题我解决了,我是把一个表达式放在一个变量A里,想用另一个变量B接收这个变量A里的表达式的结果,用EXECUTE IMMEDIATE SELECT 表达式A FROM DUAL INTO B;
在这里也把这个方法跟大家分享一下,呵呵!
luoyoumou 2011-04-08
  • 打赏
  • 举报
回复 1
-- 当出错的时候,就返回空值!

create or replace function cac_val(v_str varchar2)
return number
is
v_res number(38,4);
begin
execute immediate 'select '||v_str||' from dual' into v_res;
return v_res;
exception when others then
return null;
end;
/

select cac_val('2*10+3') from dual;
luoyoumou 2011-04-08
  • 打赏
  • 举报
回复
ceygle@SZTYORA> create or replace function cac_val(v_str varchar2)
2 return number
3 is
4 v_res number(38,4);
5 begin
6 execute immediate 'select '||v_str||' from dual' into v_res;
7 return v_res;
8 exception when others then
9 return 0;
10 end;
11 /

函数已创建。

eygle@SZTYORA> select cac_val('2*10+3') from dual;

CAC_VAL('2*10+3')
-----------------
23
lixinbill 2011-04-08
  • 打赏
  • 举报
回复
用正则 匹配你传给变量的串 然后拆分 通过to_number 转换拆出来的数字
接着if判断 拆出来的运算符 是 '+' '-' '*' '/' 等等
然后就去运算吧 记得处理+-*/等的运算优先级

秋雨飘落 2011-04-08
  • 打赏
  • 举报
回复
select 1+2*3 into 变量 from dual
  数据库操作是软件行业人员必备的技能,这门视频教学课程主要是针对从事软件技术的新人的,适合在校大学生、准备转行到IT行业的新人、软件公司新入职员工。这门课程主要涉及Oracle数据库的基础操作和SQL语法,因为绝大部分软件技术人员掌握这些就可以了,数据库的大部分功能,我们平时是用不到的,所以不用花太多时间去研究。把这门课程里面的内容学会,足以胜任日常性数据库相关的工作。  这门视频教学课程不是针对DBA的培训课程,从事DBA工作的人在软件行业人员的占比不高,就业面不太广,有做DBA志向的同学可以到专门的培训机构学习Oracle的OCA、OCP、OCM课程,他们有针对应试的培训内容,他们也可以安排相应的考试,考试通过后会有相应的证书,这门课程更偏向编程应用,不是面向Oracle认证考试的。   我对Oracle数据库有十几年的使用经验,我们公司的数据库是Oracle数据库,基本上每天的编程工作都要写SQL语句,公司的历史数据比较多,需要通过编写SQL语句来进行查询处理,有两年时间,我的工作就是编写Oracle数据库的存储过程。  这个视频教学课程使用Oracle 19c版本的数据库进行讲解。每节课程都结合工作实际,都是干货,都经过认真准备,相信可以给大家带来很大帮助。

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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