Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Инсталляция полномочий непосредственно из процедуры

Инсталляция полномочий непосредственно из процедуры

Процедура GRANT_PERMS, показанная в листинге 35.2, в основном похожа на процедуру PERMSCRIPT из листинга 35.1. Вместо того чтобы создавать набор выходных строк для выполнения под isql в качестве скрипта, она непосредственно устанавливает полномочия через EXECUTE STATEMENT. Такая техника недоступна в Firebird 1,0.x.

Листинг 35.2. Процедура полномочий

/* (с) Helen Borrie 2004, free for use and modification under the Initial Developer's Public License */

SET TERM ^;

CREATE PROCEDURE GRANT_PERMS

(CMD VARCHAR(6) ,

PRIV CHAR(10),

USR VARCHAR (31) ,

ROLENAME VARCHAR(31),

GRANTOPT SMALLINT)

AS

DECLARE VARIABLE RELNAME VARCHAR (31);

DECLARE VARIABLE EXESTRING VARCHAR(1024) = '';

DECLARE VARIABLE EXESTUB VARCHAR (1024 ) = '';

BEGIN

IF (ROLENAME = ' ' ) THEN ROLENAME = NULL;

IF (USR = '') THEN USR = NULL;

IF (PRIV = '') THEN PRIV = NULL;

IF ((PRIV IS NULL AND ROLENAME IS NULL) OR USR IS NULL) THEN EXIT;

IF (CMD STARTING WITH 'G') THEN

EXESTUB = 'GRANT ';

ELSE

EXESTUB = 'REVOKE ';

IF (ROLENAME IS NOT NULL) THEN

BEGIN

IF (EXESTUB = 'GRANT') THEN

BEGIN

EXESTUB = EXESTUB || ROLENAME || ' TO ' || USR;

IF (GRANTOPT = 1) THEN

EXESTUB = EXESTUB || ' WITH ADMIN OPTION';

ELSE

EXESTUB = EXESTUB || ROLENAME || ' FROM ' || USR;

EXECUTE STATEMENT EXESTUB;

END

ELSE

BEGIN

IF (PRIV = 'ANY') THEN

EXESTUB = EXESTUB || 'SELECT,DELETE,INSERT,UPDATE,REFERENCES ON ';

ELSE

EXESTUB = EXESTUB || PRIV || ' ON ' ;

FOR SELECT RDB$RELATION_NAME FROM RDB$RELATIONS

WHERE RDB$RELATION_NAME NOT STARTING WITH 'RDB$'

INTO : RELNAME DO

BEGIN

EXESTRING = EXESTUB || :RELNAME || ' ';

IF (CMD STARTING WITH 'G') THEN

EXESTRING = EXESTRING || 'TO ';

ELSE

EXESTRING = EXESTRING || 'FROM ';

EXESTRING = EXESTRING || USR;

IF (GRANTOPT = 1) THEN

EXESTRING = EXESTRING || ' WITH GRANT OPTION';

EXECUTE STATEMENT EXESTRING;

END

END

END ^

SET TERM ;^

Если вы сами хотите поэкспериментировать с этими скриптами и изменить их для ваших потребностей, вы можете найти исходные тексты в разделе Download на http://www.apress.com, в файле permscripts.sql.

Пора дальше

Следующая (и последняя) глава этой части содержит множество тем, связанных с архитектурными вариантами сервера, включая раздел по инсталляции и использованию встроенного Суперсервера под Windows. Установки файла конфигурации в firebird.conf или isc config/ibconfig могут быть найдены в этой главе вместе с темой безопасности параметров конфигурации, связанных с использованием в Firebird внешних выполняемых и других файлов.

Оглавление книги


Генерация: 1.789. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз