İnsanoğlu hala tüm bilgisayarların en alışılmadık olanıdır. Jhon F.Kennedy
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
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder