a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > Oracle > 正文

Oracle之AUTHID CURRENT_USER 3

2024-08-29 13:54:36
字體:
來源:轉載
供稿:網友

3調用者的舉例詳解

沒有AUTHID CURRENT_USER表示定義者權限(definer rights),以定義者身份執行;

加上AUTHID CURRENT_USER表示調用者權限(invoker rights),以調用者身份執行。

 

例:

 

1. 創建兩個用戶:xxpo,xxgl

2. 在xxpo下創建一張表:xxpo_authid_test

[c-sharp] view plaincopyCREATE TABLE xxpo.xxpo_authid_test(ID NUMBER,NAME VARCHAR2(20));  

3. 在xxpo下創建如下兩個PRocedure

3.1 xxpo_no_authid_test_prc:

[c-sharp] view plaincopyCREATE OR REPLACE PROCEDURE xxpo_no_authid_test_prc  (    p_id   IN NUMBER   ,p_name IN VARCHAR2  ) IS  BEGIN    INSERT INTO xxpo_authid_test      (id      ,NAME)    VALUES      (p_id      ,p_name);  END xxpo_no_authid_test_prc;  

3.2 xxpo_has_authid_test_prc:

[c-sharp] view plaincopyCREATE OR REPLACE PROCEDURE xxpo_has_authid_test_prc  (    p_id   IN NUMBER   ,p_name IN VARCHAR2  ) AUTHID CURRENT_USER IS  BEGIN    INSERT INTO xxpo_authid_test      (id      ,NAME)    VALUES      (p_id      ,p_name);  END xxpo_has_authid_test_prc;  

4. 將兩個procedure的執行權限(EXECUTE)賦予xxgl:

[c-sharp] view plaincopySQL> GRANT EXECUTE ON xxpo_no_authid_test_prc TO xxgl;     Grant succeeded  SQL> GRANT EXECUTE ON xxpo_has_authid_test_prc TO xxgl;     Grant succeeded  

5. 在xxgl分別調用xxpo下面的兩個procedure,查看結果:

[c-sharp] view plaincopySQL> BEGIN    2  xxpo.xxpo_no_authid_test_prc(1,'nameXXGL001');    3  END;    4  /     PL/SQL procedure successfully completed     SQL>   SQL> BEGIN    2  xxpo.xxpo_has_authid_test_prc(2,'nameXXGL002');    3  END;    4  /     BEGIN  xxpo.xxpo_has_authid_test_prc(2,'nameXXGL002');  END;     ORA-00942: table or view does not exist  ORA-06512: at "XXPO.XXPO_HAS_AUTHID_TEST_PRC", line 7  ORA-06512: at line 3     SQL> SELECT * FROM xxpo.xxpo_authid_test;             ID NAME  ---------- --------------------           1 nameXXGL001     SQL>   

由于我們并沒有在xxgl用戶下創建一個名為xxpo_authid_test的表,所以當我們在xxgl用戶下以調用者(xxgl)權限去執行xxpo.xxpo_has_authid_test_prc這個procedure的時候,會報表不能找到(ORA-00942)的錯誤;而以定義者(xxpo)權限去執行則不存在此問題。

---

Authid Current_User 是調用者權限。Oracle DB下面有2種執行的權限:定義者權限和調用者權限。默認都是定義者權限。聲明Authid Current_User后就是調用者權限。定義者權限的現象是,如果在APPS下創建的procedure,那其他user,只要能執行procedure,都是以apps的名義來執行的。因為APPS是procedure的定義者。APPS能做什么,那這個procedure就能做什么。調用者權限的現象是,如果在APPS下創建的procedure,如果其他user有權限執行這個procedure,這個procedure所做的內容都是以當前user的名義來做的。如果某個table,只有APPS才有權限修改,那這個procedure在apps下面才執行成功。其他user下是不成功的。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中文字幕精品一区久久久久 | 欧美日韩在线综合 | 日本黄色一区 | 精品亚洲成a人片在线观看 99在线免费视频 | 日韩视频一区二区三区 | 日韩精品视频在线免费观看 | 日韩精品一区二区三区在线观看 | 久久这里只有精品首页 | 日韩成人一区二区 | 视频一区免费观看 | 国产中文在线播放 | 久久4 | 亚洲一二视频 | 少妇精品久久久久久久久久 | 日本久草 | 超碰超碰97 | 久久99精品国产.久久久久 | 亚洲国产高清视频 | 十八岁禁看网站 | 欧美日本免费一区二区三区 | 污网站在线免费 | 欧美日韩国产中文字幕 | 久在线| 欧洲一区二区三区免费视频 | 日本二区在线观看 | 久久精品久久久 | 久久91精品国产91久久跳 | a在线播放 | 中文字幕视频在线 | 亚洲网在线| 亚洲欧美韩国 | 久草在线资源视频 | 日韩精品视频在线播放 | 久久久91 | 久久久久亚洲 | 国产精品三级久久久久久电影 | 国产精品久久久久久亚洲毛片 | 亚洲污视频 | 久久久久久久久久久久久久久久久久久久 | 国产亚洲精品美女久久久久久久久久 | 日韩在线精品 |