3 Mayıs 2017 Çarşamba

Informix Database Server'da Tablolara Kullanıcı Yetkisi Verme




    SQL'de Database Tablolarına Kullanıcı Yetkisi Veren Stored Procedure:


Informix'de kullanıcılara tablo yetkisi veren procedure aşağıdaki gibi tanımlanabilir:


--- Aynı ad ile kayıtlı procedure var ise silinir. 
drop PROCEDURE if exists SET_PERMISSION

--- Informix'de işletilmek istenen iki komut arası ayıracı...
^!^  


---- stored procedure'nin oluşturulması...

CREATE PROCEDURE SET_PERMISSION()

---- procedure'de kullanılacak değişkenlerin tanımlanması..
DEFINE vYETKI char(200);
DEFINE vOWNER char(30);
DEFINE ERROR_NUMBER   INT;
DEFINE ISAM_ERROR_VAR INT;
DEFINE ERROR_DATA_VAR CHAR(255);
DEFINE vTABLOYOKHATAKODU INT;


---- hata kodlarına bakarak hata kodu karşılaştırması yapan başka bir procedure'nin çalıştırılması..
ON EXCEPTION SET ERROR_NUMBER, ISAM_ERROR_VAR, ERROR_DATA_VAR
  IF ERROR_NUMBER <> vTABLOYOKHATAKODU THEN
    RAISE EXCEPTION ERROR_NUMBER, ISAM_ERROR_VAR, ERROR_DATA_VAR;
  END IF;

END EXCEPTION;

---- procedure'de tanımlı bir değişkene const sayı ataması aşağıdaki gibidir.
LET vTABLOYOKHATAKODU=-206;


---- Select sorgusunda sonucu gelen tüm tabloları check eden foreach döngüsü...
FOREACH CR1 FOR

---- Select sonucunun procedure'de tanımlı vYETKI değişkenine atanması...
select 'GRANT ALL ON '||trim(OWNER)||'.'|| TRIM(TABNAME) || ' TO PUBLIC' into vYETKI
from systables
where ((tabtype='V' or statlevel='A') and tabname not like 'sys%')

---- vYETKI değişkenine atanan sonuçların execute edilmesi..
EXECUTE IMMEDIATE vYETKI;


---- döngü ve procedure'nin sonlandırılması...
END FOREACH;
               
END PROCEDURE  






Hiç yorum yok:

Yorum Gönder