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;
/
Bir yanıt yazın