Краткий курс


Download 1.48 Mb.
Pdf ko'rish
bet31/35
Sana01.03.2023
Hajmi1.48 Mb.
#1242023
1   ...   27   28   29   30   31   32   33   34   35
Bog'liq
Майкл Мак-Локлин - Oracle DB 11g. Программирование на языке PL-SQL - 2014 курс

683
SET FEEDBACK ON 
SET PAGESIZE 999
SET SERVEROUTPUT ON SIZE 1000000
SPOOL c r e a te _ u s e r .lo g
DECLARE
- - Определяем исключение. 
wrong_schema EXCEPTION;
PRAGMA EXCEPTION_INIT(wrong_schema,-20001);
- - Определяем возвращаемую переменную, 
r e tv a l VARCHAR2(1 CHAR);
/*
| | Определяем курсор, чтобы определить, является текущий пользователь 
| | пользователем SYSTEM или пользователем с правами роли DBA.
*/
CURSOR p r iv s IS 
SELECT DISTINCT n u ll 
FROMuser_role_privs 
WHERE username = ‘ SYSTEM’
OR g ra n ted _ ro le = ‘ DBA’ ;
BEGIN
- - Открываем курсор и читаем его.
OPEN p rivs;
LOOP
- - Читаем строку.
FETCH p r iv s INTO r e tv a l;
- - Выясняем, не претерпел ли курсор сбой.
IF privs%N0TF0UND THEN
— генерируем исключение.
RAISE wrong_schema;
ELSE
— Выясняем, существует ли пользователь p ls q l, и удаляем его.
FOR i IN (SELECT n u ll FROMdba_users WHERE username = ‘ PLSQL’ ) LOOP 
EXECUTE IMMEDIATE ‘ DROP USER p ls q l CASCADE’ ;
END LOOP;
- - Создаем пользователя и предоставляем ему права.
EXECUTE IMMEDIATE ‘ CREATE USER p ls q l IDENTIFIED BY p l s q l ’ ;
EXECUTE IMMEDIATE ‘ GRANT connect TO p l s q l ’ ;
EXECUTE IMMEDIATE 'GRANT resource TO p l s q l ’ ;
- - Печатаем при успешном исполнении.
DBMS_OUTPUT.PUT_LINE(CHR(10)| | ’ Создан пользователь p l s q l . ’ );
END IF;
- - Выходим из цикла.
EXIT;
END LOOP;
- - Закрываем курсор.
CLOSE p rivs;
EXCEPTION
- - Обрабатываем определенное исключение.

Download 1.48 Mb.

Do'stlaringiz bilan baham:
1   ...   27   28   29   30   31   32   33   34   35




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling