Базы данных Oracle - статьи

         

CREATE OR REPLACE PROCEDURE whoowns


PL/SQL procedure successfully completed.

Перетранслируем процедуру для работы с правами запускающего:

CONNECT scott/tiger

CREATE OR REPLACE PROCEDURE whoowns AUTHID CURRENT_USER

AS BEGIN DBMS_OUTPUT.PUT_LINE ( SYS_CONTEXT ( 'userenv', 'CURRENT_SCHEMA' ) ); DBMS_OUTPUT.PUT_LINE ( SYS_CONTEXT ( 'userenv', 'CURRENT_USER' ) ); DBMS_OUTPUT.PUT_LINE ( user ); END; /

Снова проверка:

SQL> SET SERVEROUTPUT ON SQL> EXECUTE whoowns SCOTT SCOTT SCOTT

PL/SQL procedure successfully completed.

SQL> ALTER SESSION SET CURRENT_SCHEMA = system;

Session altered.

SQL> EXECUTE scott.whoowns SYSTEM SCOTT SCOTT

PL/SQL procedure successfully completed.

SQL> CONNECT / as sysdba Connected. SQL> SET SERVEROUTPUT ON SQL> EXECUTE scott.whoowns SYS SYS SYS

PL/SQL procedure successfully completed.

SQL> ALTER SESSION SET CURRENT_SCHEMA = system;

Session altered.

SQL> EXECUTE scott.whoowns SYSTEM SYS SYS

Примеры поясняют отличие атрибутов CURRENT_SCHEMA и CURRENT_USER контекста USERENV друг от друга и от системной переменной USER.


Содержание раздела