动态SQL,先拼接成字符串,然后动态执行,具体用法百度

解决方案 »

  1.   

    动态sql 百度下 execute immediate into 用法
      

  2.   

    哦,知道了,还有个问题。就是execute immediate执行select动态sql的时候,能像静态sql一样,实现这样的功能吗? 
    select a.a from (select a from a)a,(select a from b)b where ....
      

  3.   

    查询结果如果是1条记录就可以用execute immediate into 的用法
    如果结果是多条可以采用动态游标实现,open cursor for 
      

  4.   


    多条记录,但是需要不同的查询结果做表连接呢,想静态的select那样,可以实现吗?
      

  5.   

    Oracle Cursor的使用
      

  6.   

    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;