
select seq_testnextval into v_sv from dual;
查询序列当前值、查询序列下一个值,都不能直接写序列nextval,而是写成SQL表达式的形式方可执行
只需要将表中有序列的值的那一列设置为主键约束就可以了吧
alter table table_name(表名) add constraints pk1(主键的名字) primary key(code表中对应的有序列值的列);
用nextval来获取侠义值自动增长的值。
1、如创建一个序列:
CREATE SEQUENCE emp_sequence --序列名INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
2、然后执行下边语句:
select emp_sequencenextval from dual;3、结果:
其中1就是下一个值,如果执行第二遍,结果就会按照序列的规则自增。
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中
以上就是关于oracle 存储过程中查询序列值并用变量接收全部的内容,包括:oracle 存储过程中查询序列值并用变量接收、oracle 主键默认取序列的值 不要用触发器、怎么取得oracle数据库,下一个自动增长列的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)