oracle 存储过程中查询序列值并用变量接收

oracle 存储过程中查询序列值并用变量接收,第1张

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数据库,下一个自动增长列的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9544747.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存