数码资讯
Oracle重置序列详细说明从指定数字开始的方法。
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
将Oracle序列从指定的数重置
复制代码代码如下所示:
声明
n数(10);
v_startnum号(10):= 10000001;多少开始
v_step号(10):= 1;步
TSQL VARCHAR2(200);
v_seqname VARCHAR2(200):= 'mip_jf_sequence ';序列名称
开始
执行immediate'select| | v_seqname | | nextval从dual'into N';
N:= v_startnum-n-v_step;-从10000001开始
Tsql:= 'alter序列| | v_seqname | | 'increment N的| |;
立即执行TSQL;
执行immediate'select| | v_seqname | | nextval从dual'into N';
Tsql:= 'alter序列| | v_seqname | | 'increment ' | | v_step;
立即执行TSQL;
结束;
在不删除重建的情况下,重新排列序列是一种简单的方法,一般来说,在实际开发过程中经常使用序列。通过它生成主键非常方便,但有时我们需要将它重置为零。我们通常使用的方法是删除它并重新创建它。
现在让我们看看另一种方式:
复制代码代码如下所示:
SQL> create sequence seq_1 increment by 1 start with 1 maxvalue 999999999;
序列已创建。
已创建或替换程序seq_reset(v_seqname VARCHAR2)为
2 N数(10);
3 TSQL VARCHAR2(100);
4开始
5执行immediate'select| | v_seqname | | nextval从dual'into N';
6 N:=(n-1);
7 TSQL:= 'alter序列| | v_seqname | | 'increment N的| |;
8立即执行TSQL;
9执行immediate'select| | v_seqname | | nextval从dual'into N';
10 TSQL:= 'alter序列| | v_seqname | | 'increment 1;
11立即执行TSQL;
12年底,seq_reset;
13 /
已经创建了这个过程。
SQL >选择seq_1.nextval双;
nextval
—
二
SQL
nextval
—
三
SQL
nextval
—
四
SQL
nextval
—
五
SQL> exec seq_reset('seq_1);
已成功完成PL/sql过程。
SQL >选择seq_1.currval双;
CURRVAL
—
一
SQL >
这个过程可以在任何时候调用,以达到序列重置的目的。
这个存储过程已经编写得很快,可以进一步完善,不再需要进一步描述。
Oracle重置序列(没有重构方法)
在Oracle中,当自增量序列被重置为初始1时,它全部被删除和重建。这种方法有许多弊端。其功能和存储过程将失败,需要重新编译。
但是,有一种巧妙的方法来删除序列。首先,使用步长参数,发现该序列的nextval。记住将增量更改为负值(依次),然后将其更改回来。
假设序列名称需要修改:seq_name
1、选择seq_name.nextval双; / /假设的结果5656
2、通过5655改变序列seq_name增量; / /注-(n-1)
3、选择seq_name.nextval双; / /检查一遍,去,重置为1。
4、1改变序列seq_name增量; / /还原
您可以编写一个存储过程,下面是完整的存储过程,然后调用调用可以被调用:
复制代码代码如下所示:
创建或替换程序seq_reset(v_seqname VARCHAR2)N号(10);
TSQL VARCHAR2(100);
开始
执行immediate'select| | v_seqname | | nextval从dual'into N';
=(n-1);
Tsql:= 'alter序列| | v_seqname | | 'increment N的| |;
立即执行TSQL;
执行immediate'select| | v_seqname | | nextval从dual'into N';
Tsql:= 'alter序列| | v_seqname | | 'increment 1;
立即执行TSQL;
最后seq_reset;
复制代码代码如下所示:
声明
n数(10);
v_startnum号(10):= 10000001;多少开始
v_step号(10):= 1;步
TSQL VARCHAR2(200);
v_seqname VARCHAR2(200):= 'mip_jf_sequence ';序列名称
开始
执行immediate'select| | v_seqname | | nextval从dual'into N';
N:= v_startnum-n-v_step;-从10000001开始
Tsql:= 'alter序列| | v_seqname | | 'increment N的| |;
立即执行TSQL;
执行immediate'select| | v_seqname | | nextval从dual'into N';
Tsql:= 'alter序列| | v_seqname | | 'increment ' | | v_step;
立即执行TSQL;
结束;
在不删除重建的情况下,重新排列序列是一种简单的方法,一般来说,在实际开发过程中经常使用序列。通过它生成主键非常方便,但有时我们需要将它重置为零。我们通常使用的方法是删除它并重新创建它。
现在让我们看看另一种方式:
复制代码代码如下所示:
SQL> create sequence seq_1 increment by 1 start with 1 maxvalue 999999999;
序列已创建。
已创建或替换程序seq_reset(v_seqname VARCHAR2)为
2 N数(10);
3 TSQL VARCHAR2(100);
4开始
5执行immediate'select| | v_seqname | | nextval从dual'into N';
6 N:=(n-1);
7 TSQL:= 'alter序列| | v_seqname | | 'increment N的| |;
8立即执行TSQL;
9执行immediate'select| | v_seqname | | nextval从dual'into N';
10 TSQL:= 'alter序列| | v_seqname | | 'increment 1;
11立即执行TSQL;
12年底,seq_reset;
13 /
已经创建了这个过程。
SQL >选择seq_1.nextval双;
nextval
—
二
SQL
nextval
—
三
SQL
nextval
—
四
SQL
nextval
—
五
SQL> exec seq_reset('seq_1);
已成功完成PL/sql过程。
SQL >选择seq_1.currval双;
CURRVAL
—
一
SQL >
这个过程可以在任何时候调用,以达到序列重置的目的。
这个存储过程已经编写得很快,可以进一步完善,不再需要进一步描述。
Oracle重置序列(没有重构方法)
在Oracle中,当自增量序列被重置为初始1时,它全部被删除和重建。这种方法有许多弊端。其功能和存储过程将失败,需要重新编译。
但是,有一种巧妙的方法来删除序列。首先,使用步长参数,发现该序列的nextval。记住将增量更改为负值(依次),然后将其更改回来。
假设序列名称需要修改:seq_name
1、选择seq_name.nextval双; / /假设的结果5656
2、通过5655改变序列seq_name增量; / /注-(n-1)
3、选择seq_name.nextval双; / /检查一遍,去,重置为1。
4、1改变序列seq_name增量; / /还原
您可以编写一个存储过程,下面是完整的存储过程,然后调用调用可以被调用:
复制代码代码如下所示:
创建或替换程序seq_reset(v_seqname VARCHAR2)N号(10);
TSQL VARCHAR2(100);
开始
执行immediate'select| | v_seqname | | nextval从dual'into N';
=(n-1);
Tsql:= 'alter序列| | v_seqname | | 'increment N的| |;
立即执行TSQL;
执行immediate'select| | v_seqname | | nextval从dual'into N';
Tsql:= 'alter序列| | v_seqname | | 'increment 1;
立即执行TSQL;
最后seq_reset;
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。