怎么oracle 数据库怎么赋予select any directory 权限
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么oracle 数据库怎么赋予select any directory 权限相关的知识,希望对你有一定的参考价值。
1、默认的普通用户scott默认未解锁,不能进行那个使用,新建的用户也没有任何权限,必须授予权限/*管理员授权*/
grant create session to zhangsan;//授予zhangsan用户创建session的权限,即登陆权限
grant unlimited session to zhangsan;//授予zhangsan用户使用表空间的权限
grant create table to zhangsan;//授予创建表的权限
grante drop table to zhangsan;//授予删除表的权限
grant insert table to zhangsan;//插入表的权限
grant update table to zhangsan;//修改表的权限
grant all to public;//这条比较重要,授予所有权限(all)给所有用户(public)
2、oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的,需要互相授权
/*oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的*/
grant select on tablename to zhangsan;//授予zhangsan用户查看指定表的权限
grant drop on tablename to zhangsan;//授予删除表的权限
grant insert on tablename to zhangsan;//授予插入的权限
grant update on tablename to zhangsan;//授予修改表的权限
grant insert(id) on tablename to zhangsan;
grant update(id) on tablename to zhangsan;//授予对指定表特定字段的插入和修改权限,注意,只能是insert和update
grant alert all table to zhangsan;//授予zhangsan用户alert任意表的权限 参考技术A oracle里的权限有两种权限,系统权限和对象权限,所谓系统权限,就是oracle里已经hardcode写死的权限,这些权限,我们是不能自己去扩展的,比如select any table, create any table. create table等,这里的权限已经在oracle里全部规定好了,
可以通过查看system_privilege_map这个数据字典表来查看所以的oracle系统内置的权限。
SQL> select * from system_privilege_map;
PRIVILEGE NAME PROPERTY
---------- ---------------------------------------- ----------
-3 ALTER SYSTEM 0
-4 AUDIT SYSTEM 0
-5 CREATE SESSION 0
-6 ALTER SESSION 0
-7 RESTRICTED SESSION 0
这里就是所有的内置的系统权限了,其实如果有开发过权限系统的经验的话,对这里的这个概念,可以理解为function permission,也就是你可以进行哪些操作。 参考技术B 直接赋予DBA权限好了。。 参考技术C grant select any directory to user
oracle的sql怎么定义变量啊
如在oracle的sql语句中,先定义一个变量a等于20110101(这个可以随便手工修改),然后insert into table1
select* from table2 where date=:a; 实现类似的功能,请问怎么做啊
(a varchar2(8))
as
begin
insert into table1 select * from table2 where "date"=a;
commit;
end;
上边是创建
执行时
beginp_insert(\'20110101\') ;
end;
说一下,你这个a和表2里的类型必须都一致,都要是字符型,如果不是的话,输入参数a不可以变,你可以在表2里用to_char函数将日期转成这个格式
还有你表2里的字段叫date,这个是关键字,所以加了双引号
追问不好意思,可能没说清楚,整个sql语句很长,很多地方都需要用到a这个变量的,那要把全部几百行的语句都写成存储过程啊
追答写了存储过程后,你用记事本里替换一下就OK了啊
把所有的20110101换成a就好了,oracle只有存储过程里能用变量来处理,直接在sql上不太可能
insert into table1 select* from table2 where date= &a;
执行的时候自动会跳出框让你填写a的值。。这里a是数值
如果a是字符或日期格式的的话那么改成
insert into table1 select* from table2 where date= '&a';追问
怎么在sql语句中给a赋值啊
追答&a 就这样。你运行就知道了
追问我知道,我的目的是在程序开始时给a赋值,然后后面就可以直接把a当数字用了
追答比如 select*from a where id=&n;你运行之后后提示你 请输入n的值,这个时候赋值。
这个是SQL里变量的使用方法。每次运行每次手工赋值 你不要这样?还是你要自动赋值?还是什么意思???
比如,想实现类似其他程序语言的做法
先给a赋值,类似
a:=1;
然后
insert into table1 select* from table2 where date= '&a';把赋值后的a插入数据库中
然后我可以用程序给a赋不同的值,然后分别插入数据库中
感谢这位兄台了
你是想要程序赋值?不要人为的赋值是这个意思吗?还是什么意思?
insert into table1 select* from table2 where date= '&a' 你执行一次,提示你输入a 的值,你输入1那么程序就执行insert into table1 select* from table2 where date= ‘1’
你再执行一次 那么还会提示再次输入a 的值,你输入2
那么程序就执行insert into table1 select* from table2 where date= ‘2’
从你的问题看,难道这样不是你要的结果吗?。。。。如果不是这样的话,还请详细说明吧。。。到底你要做什么
另外这个是SQL不是编译语言。不要拿其他的思维来想。。。
SQL是解释型语言不是编译型的。。。这因为如此所以,才有PL/SQL
就是想要程序赋值啊,不想手工输入
想达到上面写的效果
我先在程序中给a赋值
然后insert into table1 select* from table2 where date= '&a';把赋值后的a插入数据库中
sql做不到吗?
这样的话sql 做不到。。。不是oracle的话还有别的办法。。
oracle只能用PL/SQL 也就是用存储过程
b date;
另外 你的where语句不对 where date=a追问
能不能写全点啊,谢谢
以上是关于怎么oracle 数据库怎么赋予select any directory 权限的主要内容,如果未能解决你的问题,请参考以下文章