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

首頁 > 數據庫 > Oracle > 正文

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

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


收集最實用的網頁特效代碼!

  我們知道,用戶擁有的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

  已經可以執行了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 旺苍县| 沁源县| 巩义市| 天全县| 绥芬河市| 绍兴市| 新津县| 奉贤区| 阳山县| 马关县| 昭通市| 汝南县| 绥化市| 手游| 黄龙县| 新蔡县| 武威市| 永和县| 忻州市| 大悟县| 大余县| 金湖县| 曲松县| 四会市| 双辽市| 铜陵市| 浑源县| 瓦房店市| 兰溪市| 乐至县| 伊川县| 固镇县| 车险| 定南县| 黑河市| 商丘市| 司法| 绍兴市| 寿宁县| 南宫市| 乐东|