
执行如下sql:
select from user_sequences;
select from user_sequences where sequence_name like '%T_SELL_BRAND%';
select from user_sequences where sequence_name='SEQ_T_SELL_BRAND';
注意:序列名区分大小写。
根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等。
具体步骤如下:/导致这种情况的原因主要是……
1 oracle的逻辑是,同一会话中,必须先通过NEXTVAL后,才能获取CURRVAL值
2 关于跳号,应该是cache的作用
你可以在SQL窗口打出sequence名称,右键-> 属性,或右键->查看,来查看SEQ信息
3 oracle的逻辑sequence是不会rollback的,如果想要改变start值(或当前值),必须 drop sequence 再 re-create
给你个说明:
CREATE SEQUENCE test_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
一旦定义了test_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值(第一查询时会报未初始化,调用一次NEXTVAL后可用)
NEXTVAL=增加sequence的值,然后返回 sequence 值
比如:
test_sequenceCURRVAL
test_sequenceNEXTVAL
可以使用sequence的地方:
- 不包含子查询、snapshot、VIEW的 SELECT 语句
- INSERT语句的子查询中
- NSERT语句的VALUES中
- UPDATE 的 SET中
创建和删除序列
例1:创建序列:
CREATE SEQUENCE ABC INCREMENT BY 1 START WITH 10 MAXVALUE 9999999 NOCYCLE NOCACHE;
执行结果:
序列已创建。
例2:删除序列:
drop SEQUENCE ABC;
执行结果: 序列已删除
注意: *** 作者必须是序列的拥有者、或拥有drop该sequence权限
伪列--->nextval、currval
select 序列名currval from dual;得到序列的“当前值”
select 序列名nextval from dual;得到序列数值中下一个值
向数据库中插入时、如下使用:
insert into 表1 values(序列名nextval,'tom');
修改序列--->
alter sequence +序列名
select seq_testnextval into v_sv from dual;
查询序列当前值、查询序列下一个值,都不能直接写序列nextval,而是写成SQL表达式的形式方可执行
select
your_seq_namecurrval
from
dual;
可以得到当前值,且不会增加序列。
不过需要注意的是如果该序列是第一次使用,是不能用currval的,因为还没初始,必须至少用nextval一次后才能用currval。
以上就是关于怎么查看oracle创建的序列全部的内容,包括:怎么查看oracle创建的序列、oracle序列、Oracle序列等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)