oracle 输入带*的为模糊查询,不带*的为精确查询的存储过程.

create or replace procedure up_dt(
ocr_sn varchar2,
cur_dt OUT SYS_REFCURSOR
)

is
T_SQL varchar2(5000);
begin
 
  T_SQL:='select * from tboqcreturn T  where 1=1';
   dbms_output.put_line('T_SQLddddddddddd');
  
    IF ocr_sn is not null  THEN      
                    BEGIN
                     -- T_SQL := T_SQL || ' AND T.OCR_SN like ';
                      IF  (substr(ocr_sn,1,1)) != '*' and (substr(ocr_sn,length(ocr_sn),1)) != '*' then
                       T_SQL := T_SQL || 'AND T.OCR_SN =''' || ocr_sn || '''';
                      
                      ELSIF (substr(ocr_sn,1,1)) = '*' and (substr(ocr_sn,length(ocr_sn),1)) = '*' then
                      T_SQL := T_SQL ||'AND T.OCR_SN like''%' ||  substr(ocr_sn,2,LENGTH(ocr_sn)-2) || '%''';  
                     
                      ELSIF  (substr(ocr_sn,1,1)) != '*' and (substr(ocr_sn,length(ocr_sn),1)) = '*' then
                       T_SQL := T_SQL || 'AND T.OCR_SN like'''|| substr(ocr_sn,1,LENGTH(ocr_sn)-1) || '%''';
                        
                      ELSIF (substr(ocr_sn,1,1)) = '*' and (substr(ocr_sn,length(ocr_sn),1)) != '*' then
                       T_SQL := T_SQL || 'AND T.OCR_SN like'''|| substr(ocr_sn,2,LENGTH(ocr_sn)-1) || '%'''; 
                       
                      END IF;     
                    END;
   END IF;
OPEN cur_dt FOR T_SQL;
       -- select * from tboqcreturn;   1003240925595454
      dbms_output.put_line(T_SQL);
       -- OPEN cur_result FOR T_SQL;  
END;

--SELECT substr('*ABXCD*',2,LENGTH('*ABXCD*')-2) FROM DUAL

--SELECT substr('ABCDE*',1,LENGTH('ABCDE*')-1) FROM DUAL
--SELECT substr('*ABCDEF',2,LENGTH('*ABCDEF')-1) FROM DUAL

转载于:https://www.cnblogs.com/wj-wangjun/archive/2010/03/30/1700718.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值