我要实现的功能是判断1个字符串中有几对括号? 用每个括号内的值,作为一个查询条件,返回一个结果。并把这些结果集合并后返回。
比如:“sum(abc)+avg(bcd)+sqrt(cde)”这个字符串里的()也许没有,也许1个或2个,但是最多2个。
然后分别得到下面3个或2个或1个查询的结果,并返回(select * from table where code ='abc')(select * from table where code ='bcd')(select * from table where code ='cde')

解决方案 »

  1.   

    我们公司有1个自己的平台,写好的sql(select * from table)可以直接显示在html页面上。请问我写好的存储过程,如果返回结果集,怎么用sql调用
      

  2.   

    declare
      v_num1 number:=0;
      v_num2 number:=0;
      v_length number:=0;
      v_str varchar2(100):='sum(abc)+avg(bcd)+sqrt(cde)';
      v_str2 varchar2(100);
      v_start number:=1;
    begin
      v_length :=length(v_str);
      for i in v_start.. v_length 
        loop
         if i =v_start then
         v_num1 :=instr(v_str,'(',i,1); 
         v_num2 :=instr(v_str,')',i,1); 
         v_str2 :=substr(v_str,v_num1+1,v_num2-v_num1-1);--最终结果,后续需要怎么处理再怎么处理
         v_start:=v_num2+1;
         dbms_output.put_line(v_str2);   
        else null;
        end if;
        end loop  ;
    end;
      

  3.   

    v_sql:='select * from table where code ='||v_str2;作为变量调用啊
      

  4.   

    好吧,我承认我刚刚学了存储过程和游标的基本语法,上面兄弟写的sql看不太懂。能不能说说你在那判断的v_str这个字符串里有几对括号?又是在哪里把括号里的字符串取出来,并作为select * from table where t.字段1=''里的where条件来得到结果集的?