1. 程式人生 > >ORACLE 儲存過程動態建立檢視

ORACLE 儲存過程動態建立檢視

create or replace procedure "CREAR_PF_VIEW" is
   pragma AUTONOMOUS_TRANSACTION;
   cursor cur is  --定義遊標
   SELECT SPBLX FROM YDS_SHBPDY;
   sqlstr varchar2(32767);
   sql_ls varchar2(32767);
   uid varchar2(32767);
begin
  open cur;
  fetch cur
    into uid;
    sqlstr := 'create or replace view V_PF as select * from (select distinct XMBH as XMBH  From YDS_SHPB ) X1 ';
    while cur%found
    loop
      sql_ls := ' left join (select B.XMBH as '||  uid || '_BH,B.JBRYJ as '||   uid || '_YJ,B.JBR1 as '||  uid || 
       '_QZ, B.JBRQ1 as '||  uid || '_RQ from YDS_SHBPDY  A,YDS_SHPB  B  where A.SPBLX = B.SPBLX  and A.SPBLX ='''|| uid|| '''
        ) '|| uid|| ' on X1.XMBH = '|| uid|| '.'|| uid || '_BH';
     sqlstr := sqlstr ||  sql_ls;
    -- dbms_output.put_line(sql_ls);
    ---執行拼接字串
        -- execute immediate  sqlstr;
    fetch cur
      into uid;
  end loop;
  close cur;
     --dbms_output.enable(100000000);
     --dbms_output.put_line(sqlstr);
     execute immediate sqlstr; 
     commit;
end;