国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

在Oracle中使用登錄觸發(fā)器初始化用戶會話

2024-08-29 13:33:24
字體:
來源:轉載
供稿:網(wǎng)友
 你可能了解以前的USERENV函數(shù),它返回會話值,如用戶會話ID、語言、以及用戶是否擁有數(shù)據(jù)庫治理員權限。雖然由于遺留原因,USERENV函數(shù)仍在使用,但在Oracle 8i中,它已被一個新的函數(shù)所替代——SYS_CONTEXT?!YS_CONTEXT不僅能夠返回USERENV數(shù)據(jù)——它還能返回應用程序定義的數(shù)據(jù)值。應用程序上下文包括一組可以被SYS_CONTEXT返回的名稱(屬性)和匹配數(shù)據(jù)(值)。例如,假如一個人事應用要返回用戶的部門號,可以在應用程序中加入下面這行代碼:
v_dept := SYS_CONTEXT('HR_CONTEXT', 'DEPT');  Oracle 9i中推出的After Logon數(shù)據(jù)庫觸發(fā)器能夠方便地初始化應用程序上下文中的屬性。用戶成功登錄Oracle后,觸發(fā)器啟動,在指定的數(shù)據(jù)包中執(zhí)行一個存儲過程查詢數(shù)據(jù),并通過DBMS_session.SET_CONTEXT過程把它放到上下文中。使用這種方法有以下幾個好處: ·它的性能更強。應用程序上下文數(shù)據(jù)保存在SGA中,訪問它可以避免應用程序查詢數(shù)據(jù)時重復讀取磁盤。  ·它更加安全。它使用一個與上下文有關的單獨PL/SQL代碼對象,通常是一個數(shù)據(jù)包來改變或清除上下文。After Logon觸發(fā)器正是執(zhí)行的這個數(shù)據(jù)包?! に喈旍`活。你可以建立任何你需要的上下文,每個上下文中可包含無限數(shù)量的屬性-值對。  列表A說明了一個叫做HR_CONTEXT_PKG的PL/SQL數(shù)據(jù)包。它查詢當前用戶會話應與哪個部門有關,從而初始化HR_CONTEXT上下文?!∪缓竽憧梢杂孟旅娴腃REATE CONTEXT語句建立HR_CONTEXT命名空間,并把它與數(shù)據(jù)包相關聯(lián)。CREATE CONTEXT hr_contextUSING HR.HR_CONTEXT_PKG; 下面的代碼說明了一個登錄觸發(fā)器,它在用戶登錄時調(diào)用安全數(shù)據(jù)包為用戶初始化上下文。假如定位正確的部門出現(xiàn)錯誤,觸發(fā)器將通過一個EXCEPTION(異常)處理它。否則,沒有部門設置的用戶將無法登錄。CREATE OR REPLACE TRIGGER DBT_LOGONAFTER LOGONON DATABASEBEGINHR.HR_CONTEXT_PKG.INITIALIZE_HR_CONTEXT;EXCEPTIONWHEN OTHERS THENNULL;END;/ 這樣,現(xiàn)在任何應用程序都能夠找出當前用戶與哪個部門相關聯(lián),而不必進行多次邏輯讀取,從一個表中查詢它。例如:SELECT SYS_CONTEXT('HR_CONTEXT','DEPT') FROM DUAL;  這行代碼將返回當前用戶的部門ID。 Bob Watkins(OCP、MCDBA、MCSE、MCT)是一位有25年經(jīng)驗的計算機專業(yè)人士,從事過技術培訓師、顧問與數(shù)據(jù)庫治理員等職。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 上栗县| 临沭县| 蛟河市| 大石桥市| 祥云县| 新巴尔虎右旗| 石渠县| 靖江市| 岳池县| 大荔县| 甘谷县| 准格尔旗| 日照市| 石景山区| 宁城县| 康马县| 景德镇市| 徐汇区| 天等县| 甘南县| 永德县| 津市市| 庄浪县| 渭南市| 高平市| 神池县| 保定市| 宣武区| 安国市| 赫章县| 周口市| 兰西县| 普洱| 渭源县| 洪湖市| 贡嘎县| 灵川县| 孟津县| 乐平市| 前郭尔| 卢龙县|