当前位置: 代码迷 >> Oracle开发 >> oracle存储过程中where动态条件解决办法
  详细解决方案

oracle存储过程中where动态条件解决办法

热度:119   发布时间:2016-04-24 06:28:09.0
oracle存储过程中where动态条件
oracle存储过程中,where中的一个AND条件怎么动态设置呢?
SELECT  COUNT(*) sl
               INTO temp_sl
    FROM    TEST    WHERE   RQ >= prm_rptOn
                  AND para            AND JG < JG_AVG;


片段中的para是参数,也就是查询的一部分(比如:a>b and b>c  或者 a<c and d<c)这样实现的话,怎么拼写呢?
------解决思路----------------------
Set serveroutput on;  
  
Declare  
    ---define cursor type name  
    type cur_type is ref cursor;  
    cur_policy cur_type;  
    sqlStr varchar2(500);  
    rec_policy t_contract_master%rowtype;  
begin  
   ---define 动态Sql  
   sqlStr := 'select cm.policy_code, cm.applicant_id, cm.period_prem,cm.bank_code,cm.bank_account from t_contract_master cm  
     where cm.liability_state = 2   
     and cm.policy_type = 1   
     and cm.policy_cate in (2,3,4)   
     and rownum < 5   
     order by cm.policy_code desc ';  
---Open Cursor  
  open cur_policy for sqlStr;  
  loop  
       fetch cur_policy into rec_policy.policy_code, rec_policy.applicant_id, rec_policy.period_prem,rec_policy.bank_code,rec_policy.bank_account;  
       exit when cur_policy%notfound;  
         
       Dbms_Output.put_line('Policy_code:'
------解决思路----------------------
rec_policy.policy_code);  
    
  end loop;  
close cur_policy;      
  
end;
  
  相关解决方案