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

首頁 > 開發 > 綜合 > 正文

如何在存儲過程中擁有role的權限

2024-07-21 02:32:44
字體:
來源:轉載
供稿:網友

  我們知道,用戶擁有的role權限在存儲過程是不可用的。如:     SQL> select * from dba_role_PRivs where grantee='SUK';     GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
    ------------ ------------ ------------ ------------
    SUK DBA NO YES
    SUK CONNECT NO YES
    SUK RESOURCE NO YES    --用戶SUK擁有DBA這個role    --再創建一個測試存儲過程:
    create or replace procedure p_create_table
    is
    begin
    Execute Immediate 'create table create_table(id int)';
    end p_create_table;    --然后測試
    SQL> exec p_create_table;    begin p_create_table; end;    ORA-01031: 權限不足
    ORA-06512: 在"SUK.P_CREATE_TABLE", line 3
    ORA-06512: 在line 1    --可以看到,即使擁有DBA role,也不能創建表。role在存儲過程中不可用。
    --碰到這種情況,我們一般需要顯式進行系統權限,如grant create table to suk;
    --但這種方法太麻煩,有時候可能需要進行非常多的授權才能執行存儲過程
    --實際上,Oracle給我們提供了在存儲過程中使用role權限的方法:
    --修改存儲過程,加入Authid Current_User時存儲過程可以使用role權限。
    create or replace procedure p_create_table
    Authid Current_User is
    begin
    Execute Immediate 'create table create_table(id int)';
    end p_create_table;    --再嘗試執行:
    SQL> exec p_create_table;    PL/SQL procedure sUCcessfully completed    --已經可以執行了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 古浪县| 兴安盟| 石泉县| 梓潼县| 青铜峡市| 孟津县| 年辖:市辖区| 永仁县| 安阳县| 邛崃市| 盐亭县| 柳河县| 莫力| 若尔盖县| 安乡县| 永济市| 隆安县| 崇义县| 洪泽县| 方山县| 白城市| 水城县| 松潘县| 佛坪县| 清苑县| 馆陶县| 沈阳市| 宁国市| 曲沃县| 宜良县| 乐清市| 乐山市| 安远县| 那曲县| 长丰县| 自治县| 锦屏县| 平顶山市| 桃园县| 唐海县| 永顺县|