ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 非sys用户下的存储过程对v$视图的使用

非sys用户下的存储过程对v$视图的使用

原创 Linux操作系统 作者:hjianping 时间:2011-04-26 19:55:24 0 删除 编辑

非sys用户下的存储过程对v$视图的使用

1、赋予select any dictionary权限
(sys)
------------------------------------------------------
SQL> grant select any dictionary to scott;
------------------------------------------------------

(scott)
------------------------------------------------------
create or replace procedure pr_test is
  v_name varchar2(10);
begin
  select name into v_name from v$database;
  dbms_output.put_line('database name: ' || v_name);
end;
/
------------------------------------------------------


2、在视图上添加select权限,并使用动态SQL
(sys) v$xxx是v_$xxx的同义词,应给v_$xxx加select权限
------------------------------------------------------
SQL> grant select on v_$database to scott;
------------------------------------------------------

(scott)
--------------------------------------------------------------
create or replace procedure pr_test is
  v_name varchar2(10);
begin
  execute immediate 'select name from v_$database' into v_name;
  dbms_output.put_line('database name: ' || v_name);
end;
/
--------------------------------------------------------------


3、通过authid current_user使用户的角色可以用于存储过程中
(sys)
------------------------------------------------------
SQL> grant select_catalog_role to scott;
------------------------------------------------------

(scott)
--------------------------------------------------------------
create or replace procedure pr_test authid current_user is
  v_name varchar2(10);
begin
  execute immediate 'select name from v$database' into v_name;
  dbms_output.put_line('database name: ' || v_name);
end;
/
--------------------------------------------------------------

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17012874/viewspace-693808/,如需转载,请注明出处,否则将追究法律责任。

上一篇: dbms_lock.sleep
下一篇: 物化视图
请登录后发表评论 登录
全部评论

注册时间:2011-04-24

  • 博文量
    80
  • 访问量
    75419