ÖRNEK PL-SQL KODLARI

Bir Schema daki tüm tabloları başka bir schema ya taşıyan Pl-sql kod bloğu.

begin 
for loop_table in 
    (SELECT * from all_tables where owner ='FRK' and TABLE_NAME like  'IS%')

  LOOP 
      execute immediate 'create table 
      DIGERSCHEMA.'||loop_table.table_name||' as
      select * from FRK.'||loop_table.table_name;
      dbms_output.put_line(loop_table.table_name);
  END LOOP loop_table;
end;

Bir Tablodan Alınan veriler ile başka bir tabloya sorgu yaparak tablo oluşturmak ve tabloya insert işlemi gerçekleştiren kod bloğu

DECLARE  
  lv_sayac number:=1;
BEGIN  
    for i in (select * from KITAP_TESPIT)
    loop
        if lv_sayac=1 then
        EXECUTE IMMEDIATE 
            q'|BEGIN  execute immediate
                'CREATE TABLE ktp_tspt_dty AS 
                SELECT ADSOYAD,TELNO,TCNO,EPOSTA from |'||i.TABLOISMI|| q'[ where EPOSTA='']'||i.EPOSTA||q'['']'||q'|'; 
                END;  
            |';        
           else 
        EXECUTE IMMEDIATE  
            q'|BEGIN execute immediate 
                'INSERT INTO ktp_tspt_dty 
                SELECT ADSOYAD,TELNO,TCNO,EPOSTA from |'||i.TABLOISMI|| q'[ where EPOSTA='']'||i.EPOSTA||q'['']'||q'|'; 
                END;  
            |';  
          end if;
          lv_sayac:=lv_sayac+1;
     end loop;
END; 

Yukarıdaki işlemin sql lerini çıkaran plsql kod bloğu

DECLARE  
  lv_sayac number:=1;
BEGIN  
    for i in (select * from KITAP_TESPIT)
    loop
        if lv_sayac=1 then
        EXECUTE IMMEDIATE 
            q'|BEGIN  
                dbms_output.put_line('CREATE TABLE JDBA.ktp_tspt_dty AS 
                SELECT ADSOYAD,TELNO,TCNO,EPOSTA from |'||i.TABLOISMI|| q'[ where EPOSTA='']'||i.EPOSTA||q'['']'||q'|'); 
                END;  
            |';        
           else 
        EXECUTE IMMEDIATE  
            q'|BEGIN  
                dbms_output.put_line('INSERT INTO JDBA.ktp_tspt_dty 
                SELECT ADSOYAD,TELNO,TCNO,EPOSTA from |'||i.TABLOISMI|| q'[ where EPOSTA='']'||i.EPOSTA||q'['']'||q'|'); 
                END;  
            |';  
          end if;
          lv_sayac:=lv_sayac+1;
     end loop;
END; 

Bir tablodan çekilen verilerle diğer tablonun tüm verilerini update eden Pl sql kod bloğu

DECLARE  
  lv_sayac number:=1;
BEGIN  
    for i in (select * from TEMP_BLOGCU_TESPIT_TEL_abn)
    loop
        EXECUTE IMMEDIATE 
                   q'{BEGIN  
                        dbms_output.put_line('UPDATE  TEMP_BLOGCU_EPSTA_DTY SET TCNO = (SELECT TCNO from }'||i.TABLOISMI|| q'[ where TELNO='']'||i.TELNO||q'['' and rownum=1) WHERE TELNO =]'||q'{''}'||i.telno||q'{'';}'||q'{'); 
                        END;  
                    }';      
         lv_sayac:=lv_sayac+1;
     end loop;
END; 

Bir gün önceden kaln inactive session ları kill etmek için döngü;

begin
    for i in (select * from v$session where status='INACTIVE' and (sysdate-PREV_EXEC_START)>1)
    LOOP
       --dbms_output.put_line(q'{ALTER SYSTEM KILL SESSION '}'||i.sid||q'[,]'  ||i.serial#||q'[']'||' IMMEDIATE;');
        EXECUTE IMMEDIATE(q'{ALTER SYSTEM KILL SESSION '}'||i.sid||q'[,]'  ||i.serial#||q'[']'||' IMMEDIATE');
    END LOOP;
end;
/