扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1、首先要保证该数据库用户有删除序列和新建序列的权限,存储过程中这个权限要显示赋权:
我们提供的服务有:网站设计制作、做网站、微信公众号开发、网站优化、网站认证、兰西ssl等。为近千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的兰西网站制作公司
grant create sequence to 数据库用户;
grant drop any sequence to 数据库用户;
2、存储过程中创建序列和删除序列:
创建序列:
execute immediate
'create sequence 序列名' || chr(10) ||
'minvalue 1' || chr(10) ||
'maxvalue 999999999999999999999999999' || chr(10) ||
'start with 1' || chr(10) ||
'increment by 1' || chr(10) ||
'cache 20';
删除序列:
execute immediate 'drop sequence 序列名';
一般创建用户用的是create user,然后再通过grant赋权。
创建:create user XXXX identified by xxxxx;
赋权:grant connect,resource,XXXXXX to XXXXXX; (具体权利查询dba_sys_privs)
1、create user userName identified by password;
2、grant select any table to userName; --授予查询任何表
3、grant select any dictionary to userName;--授予 查询任何字典
执行上面三步就行了,那么这个用户就只有查询权限,其他的权限都没有!!
延展阅读:
oracle
甲骨文公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989年正式进入中国市场。2013年,甲骨文已超越 IBM ,成为继 Microsoft 后全球第二大软件公司。
ORACLE中怎么设置SEQUENCE权限步骤如下:
1、Create Sequence
首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。
创建语句如下:
CREATE SEQUENCE seqTest
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXvalue -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE
2、得到Sequence值
定义好sequence后,你就可以用currVal,nextVal取得值。
CurrVal:返回 sequence的当前值
NextVal:增加sequence的值,然后返回 增加后sequence值
得到值语句如下:
SELECT Sequence名称.CurrVal FROM DUAL;
如得到上边创建Sequence值的语句为:
select seqtest.currval from dual
在Sql语句中可以使用sequence的地方:
- 不包含子查询、snapshot、VIEW的 SELECT 语句
- INSERT语句的子查询中
- INSERT语句的values中
- UPDATE 的 SET中
如在插入语句中
insert into 表名(id,name)values(seqtest.Nextval,'sequence 插入测试');
3、Alter Sequence
拥有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create。
4、Drop Sequence
DROP SEQUENCE seqTest;
5、一个例子
create or replace trigger tri_test_id
before insert on S_Depart --S_Depart 是表名
for each row
declare
nextid number;
begin
IF :new.DepartId IS NULLor :new.DepartId=0 THEN --DepartId是列名
select SEQ_ID.nextval --SEQ_ID正是刚才创建的
into nextid
from sys.dual;
:new.DepartId:=nextid;
end if;
end tri_test_id;
可以按下列步骤:
如果这个序列是要给其他用户使用:
conn sys/password as sysdba
grant create sequence to 用户;
创建序列:
CREATE SEQUENCE seqTest
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXvalue -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE
具体需要哪些权限需要看用户的实际需要。我们要在有最高权限的system用户创建用户,再赋予新建用户权限,只有给新建用户权限,新建用户才能干什么。
一、权限分为系统权限及对象权限。
1、系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。
1)、DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
2)、RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
3)、CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。
2、对象权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。
CREATE SESSION,创建会话,才可以打开界面
CREATE TABLE,创建表,可创建空表,但没有权限插入数据
CREATE SEQUENCE创建序列
CREATE VIEW,创建视图
扩展资料
一、赋权方式,有两种赋予用户权限的方式,
1、对用户赋权
一对一的赋予新建用户权限,这样赋予新建用户权限比较有活性,如果新建用户多了,就比较麻烦。
2、对角色赋权
先创建角色,将权限先赋给角色代理,最后将角色代理的权限赋新建用户,这样比较死板,但是可以同时赋给很多用户。
参考资料
Oracle官网-Grant
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流