--kendi semamizda proceduremizi olusturalim ve içerisinde yine kendi semamizdaki bir tabloyu silelim.
--tablomuzu yaratalim.
CREATE TABLE deneme_silsene (
a NUMBER);
--procedure yaratalim
CREATE OR REPLACE PROCEDURE Deneme_sil
AS
v_dyn_sql VARCHAR2(200) DEFAULT NULL;
BEGIN
v_dyn_sql := 'drop table deneme_silsene';
EXECUTE IMMEDIATE v_dyn_sql;
COMMIT;
END;
/
--baska bir semadan (userdan "hedefowner") baglanarak olusturdugumuz procedureyi çalistiralim.
BEGIN
hedefowner.deneme_sil;
COMMIT;
END;
/
--yetkiniz yok hatasi alacagiz bu hatayi asmak için yetki verelim.
--bu yetkiyi kendi semamiza baglanarak kendi schemamiz altinda vermemiz gerkiyor.
GRANT EXECUTE ON deneme_sil TO hedefowner;
-- procedure normal bir sekilde çalisti ve kendi tablomuzu sildi.
-- burada tablomuz için diger user'a yetki vermedik ama yine de tablomuz üzerinde islem yapabildi.
-- grant execute yetkisi sikintili bir yetki oldugunu buradan anlayabiliriz.
--söyle bir deneme de yapalim isterseniz.
--simdi procedureyi çalistiracagimiz schemada da ayni isimde bir tablo yaratalim ve hangi tabloyu silecegine bakalim.
-- bu konu hakkinda fikri olmayan arkadaslariniz ile iddaya girerek ögle yemegi kazanabilirsiniz.
--simdi su sekilde oldu son durum.
SELECT *
FROM hedefowner.deneme_sil;
SELECT *
FROM buradansiliyom.deneme_sil;
--iki farkli schemada ayni isimde tablom var
BEGIN
hedefowner.deneme_sil;
COMMIT;
END;
/
-- burada bu procedure'yi çagirir isem hangi tabloyu silecek. procedure schema adini belirtmedim. procedurenin yaratildigi yerdeki tabloyu mu silecek
-- yoksa calistirdigimiz yerdeki tabloyu mu silecek?
--iste bu sorunun cevabi procedurenin oldugu create edildigi schemadaki tabloyu silecektir.
--bu durumu asmak için yada kafa karistirmasina , olurda yanlis schema altinda islemler yapmasini engellemek için
--"schema_adi"."tablo_adi" seklinde çalismakta fayda var. bunu aliskanlik edinmek lazim.
DROP PROCEDURE hedefowner.deneme_sil;
Subscribe to:
Post Comments (Atom)
1 comment:
güzel bir yöntem,arkadaşım :) makale'lerinin devamını diliyorum...
Post a Comment