以下の内容はhttps://htn20190109.hatenablog.com/entry/2024/12/01/151218より取得しました。


{アプリケーションコンテキスト}データベースセッションベースのアプリケーションコンテキストを作成

 

https://docs.oracle.com/cd/F19136_01/dbseg/using-application-contexts-to-retrieve-user-information.html#GUID-6F6FE37D-8D2D-4D0E-A5AA-C96D958F8BD5

 


--手順1: ユーザー・アカウントの作成
GRANT CREATE SESSION, CREATE ANY CONTEXT, CREATE PROCEDURE, CREATE TRIGGER, ADMINISTER DATABASE TRIGGER 
TO sysadmin_ctx IDENTIFIED BY oracle;

GRANT SELECT ON HR.EMPLOYEES TO sysadmin_ctx;
GRANT EXECUTE ON DBMS_SESSION TO sysadmin_ctx;

GRANT CREATE SESSION TO LOZER IDENTIFIED BY oracle;

--手順2: データベース・セッション・ベースのアプリケーション・コンテキストの作成
conn sysadmin_ctx/oracle

--手順3: セッション・データを取得してアプリケーション・コンテキストを設定するパッケージの作成

CREATE CONTEXT empno_ctx USING set_empno_ctx_pkg;

CREATE OR REPLACE PACKAGE set_empno_ctx_pkg IS 
   PROCEDURE set_empno; 
 END; 
 /
 CREATE OR REPLACE PACKAGE BODY set_empno_ctx_pkg IS
   PROCEDURE set_empno 
   IS 
    emp_id HR.EMPLOYEES.EMPLOYEE_ID%TYPE;
   BEGIN 
    SELECT EMPLOYEE_ID INTO emp_id FROM HR.EMPLOYEES 
       WHERE email = SYS_CONTEXT('USERENV', 'SESSION_USER');
    DBMS_SESSION.SET_CONTEXT('empno_ctx', 'employee_id', emp_id);
   EXCEPTION  
    WHEN NO_DATA_FOUND THEN NULL;
  END;
 END;
/

--手順4: パッケージに対するログイン・トリガーの作成

CREATE TRIGGER set_empno_ctx_trig AFTER LOGON ON DATABASE
 BEGIN
  sysadmin_ctx.set_empno_ctx_pkg.set_empno;
 END;
/

--手順5: アプリケーション・コンテキストのテスト
conn lozer/oracle
SELECT SYS_CONTEXT('empno_ctx', 'employee_id') emp_id FROM DUAL;

conn test/test
SELECT SYS_CONTEXT('empno_ctx', 'employee_id') emp_id FROM DUAL;

 

 




以上の内容はhttps://htn20190109.hatenablog.com/entry/2024/12/01/151218より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14