可以按下列步骤:
如果这个序列是要给其他用户使用:
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
。。。直接粘贴就能用的你写一个试试?正在学习中就不用想着复制粘贴,想一下为什么要这样用,能授予SEQUENCE这个权限的只有sysdba和被授予授予SEQUENCE权限的用户,登陆这些用户然后grant SEQUENCE TO cmts就可以了,如果想要给cmts用户有授予别人SEQUENCE权限的权限就加个with grant option
NEXTNUMBER是序列下一次要缓存的值的起始。
没看到 CACHE 10 吗? 系统已经给你预先缓存了10个值。
所以,NEXTVAL是2,NEXTNUMBER就是 11了。
如果 CACHE 20的话,你 看到的NEXT NUMBER就是21了!
GOOD LUCK!
需要DBA授予创建sequence的权限,否则光靠create命令创建的序列,就会返回这个错误。
楼上的那个语句
conn sys/password as sysdba ---是以DBA的身份进入的系统
grant create sequence to your_users; ---这句是授权用户创建sequence的权限
我明确的解释一下
oracle对于对象的管理是有明确的规定的(对象包括表,存储过程,视图,触发器等等)
并且可以分为有grant权限(可授权其他用户使用)和无grant权限(只能自己使用)
你的用户cmts应该是缺少建立序列的权限,解决方法是通过一个有建立序列权限并且可以授权的用户通过授权来使得你的cmts用户获得权限,对你新手来说通常使用sys用户就好了,sys用户权限比较发
楼上的命令是通过sqlplus实现的,由于不知道你的sys用户密码 所以无能为力