6 Aralık 2011 Salı

Other user Procedure


Prosedürler sahibi olan kullanıcının hakları ile çalışır.
Bazı limitasyonlar gereği veya başka bir amaçla genel olarak aşağıdaki bir sp kullanılabilir.

CREATE OR REPLACE PROCEDURE app_user.vty_run_command (cmd varchar2)
IS
BEGIN
   EXECUTE IMMEDIATE cmd;
END;
/

Bu durumda bu spyi çağıran herhangi bir user app_user hakları ile istediği işi yaptırabilir.

Örnek olarak şöyle :

--Çalıştıracağımız Prosedür

CREATE OR REPLACE PROCEDURE app_user.vty_ramazan
IS
a number :=0 ;
BEGIN
   for c in (select job from user_jobs)
   loop
   a := c.job;
   dbms_output.put_line(a);     
   end loop;
END;
/

--Prosedürü çağırmak için
set serveroutput on
Begin
  app_user.vty_run_command('begin vty_ramazan; end;');
End;
/

--Sonuç
Normalde select * from user_jobs ile kullanıcı kendi joblarını görebilir.
Bu prosedüre ile o kullanıcı altında tanımlı jobları da görebiliriz.

Bu bize ne kazandırır: DBA veya select any table veya select_catalog_role hakkı olmayan biri de başka bir kullanıcı altındaki nesne tanımlarına erişebilir.


Hiç yorum yok:

Yorum Gönder