oracle存储过程开发,涉及字符串SQL处理

nxvan 2013-05-17 11:13:34
存储过程中现有变量A,B,C......不定数量的变量,且都有赋值。现有动态字符串 STR :='A+B-C'(每次获得的字符串不同),如何求得STR字符串所表示的表达式的值?




例如:A=1,B=2,C=3,D=4




当STR := 'A+B'时,求得A+B=3;




当STR := 'A-B'时,求得A-B=-1;




当STR := 'A+B-C'时,求得A+B-C=0;




如何实现求指点。
...全文
164 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
NIan_jun 2013-05-17
  • 打赏
  • 举报
回复


    declare
      str varchar2(10) := '1*2+3';
      sql_s varchar2(100);
      n number;
   begin
      sql_s := 'select '||str||' from dual';
      execute immediate sql_s into n;
      dbms_output.put_line(str ||' = '||n);
   end;
zlc王丽 2013-05-17
  • 打赏
  • 举报
回复
create or replace function getvalue(li_A number,li_B number,li_C number,ls_sql varchar2) return number is li_return number; ls varchar2(32); begin ls:=replace(replace(replace(ls_sql,'A',li_A),'B',li_B),'C',li_C); execute immediate 'select '||ls ||' from dual ' into li_return; return(li_return); end getvalue; 这个只是是例子,作参考。

17,086

社区成员

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

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