Oracle序列的创建与重置
来源:互联网 发布:游族网络林奇妻子韩薇 编辑:程序博客网 时间:2024/06/05 17:01
表记录的流水号通常都用序列的方法来做,有时在创建工程中需要进行重置,例如在创建阶段、测试阶段等,我们可以通过多种方式重置序列,删除重建、序列重置等。下面是两种方法的存储过程实例。
要实现下面的存储过程,需要授予权限。
GRANT CREATE SEQUENCE TO user;
1、删除重建存储过程
实际上也可以用于创建,因为存储过程是先判断,存在则删除,接下来是重建。
程序流程如下:
对给定的序列进行判断,是否存在,如果存在则删除;
根据序列名称进行创建,默认从1开始到9999999999,每次步长为1;
/*** p_SetSequence 删除并重建指定序列***/CREATE OR REPLACE PROCEDURE p_SetSequence( uSequence IN VARCHAR2 -- 指定的序列)ASuNum NUMBER; uSQL VARCHAR(100);BEGIN uSQL := 'DROP SEQUENCE ' || uSequence; SELECT COUNT(*) INTO uNum FROM DUAL WHERE EXISTS ( SELECT * FROM User_Sequences WHERE SEQUENCE_NAME = UPPER(uSequence) ); IF (uNum = 1) THEN EXECUTE IMMEDIATE uSQL; DBMS_OUTPUT.PUT_LINE('序列 '|| uSequence ||' 被删除了。'); ELSE DBMS_OUTPUT.PUT_LINE('序列 '|| uSequence ||' 不存在。'); End IF; uSQL := 'CREATE SEQUENCE ' || uSequence; uSQL := uSQL ||' INCREMENT BY 1 START with 1 MAXVALUE 9999999999'; EXECUTE IMMEDIATE uSQL;END p_SetSequence;/
2、删除序列会导致与该序列相关的存储过程、函数等失效而重新编译,有时为了防止重新编译,不能删除。于是需要一种不编译也可以重置序列的方法,我们可以通过更改反向步长,用意是退回到1,然后在更改为正向步长,从而实现序列的重置。
/*** p_ReSetSequence 重置指定序列***/create or replace procedure p_ReSetSequence( uSequence IN VARCHAR2 -- 指定的序列)ASuNum NUMBER(10);uSQL VARCHAR2(100);BEGIN SELECT COUNT(*) INTO uNum FROM DUAL WHERE EXISTS ( SELECT * FROM User_Sequences WHERE SEQUENCE_NAME = UPPER(uSequence) ); IF (uNum = 1) THEN -- 1.获得序列当前的值 uSQL := 'SELECT '|| uSequence ||'.NEXTVAL FROM DUAL'; EXECUTE IMMEDIATE uSQL INTO uNum; -- 2.修改序列的步长和方向,通过负值改变方向 uNum := - (uNum-1); uSQL := 'ALTER SEQUENCE '|| uSequence ||' INCREMENT BY '|| uNum; EXECUTE IMMEDIATE uSQL; -- 3.通过获取序列的下一个值来实现反向取值1次 uSQL := 'SELECT '|| uSequence ||'.NEXTVAL FROM DUAL'; EXECUTE IMMEDIATE uSQL INTO uNum; -- 4.回复序列的步长和方向 uSQL := 'ALTER SEQUENCE '|| uSequence ||' INCREMENT BY 1'; EXECUTE IMMEDIATE uSQL; DBMS_OUTPUT.PUT_LINE('序列 '|| uSequence ||' 被重置了。'); ELSE DBMS_OUTPUT.PUT_LINE('序列 '|| uSequence ||' 不存在。'); End IF;END p_ReSetSequence;/
阅读全文
0 0
- Oracle序列的创建与重置
- oracle数据库——序列重置的存储过程的创建以及问题记录
- 求助:Oracle序列重置的问题
- oracle下重置用户的所有序列
- Oracle序列批量重置
- ORACLE重置序列sequence
- oracle重置序列方法
- oracle 序列重置
- oracle 序列的创建与使用
- oracle序列的创建
- 根据表中的记录重置Oracle序列的值
- Oracle 序列的创建与运用 内含约束补充内容
- oracle 中序列的创建
- oracle 序列的创建删除
- Oracle创建序列的方式
- Oracle:序列 SEQUENCE 创建语法与使用
- Oracle重置序列(不删除重建方式)
- Oracle重置序列(不删除重建方式)
- centos7安装配置oracle(包括yum下载依赖包)(不含监听配置)
- gulp教程之gulp-less
- PHP WebShell变形技术总结
- Python3爬虫学习笔记(3.正则详解及实例)
- gulp简单使用
- Oracle序列的创建与重置
- C#加密解密
- Spring Cloud微服务架构代码结构详细讲解
- RxSwift
- 对称加解密和非对称加解密
- android addr2line使用
- android资料集合整理
- 安全框架Shiro和Spring Security比较
- Python读取mdb文件以及shell检测