您的位置:首页 > 其它

不通过删除重建方式重置序列值得简单方式。

2008-04-26 13:58 225 查看
一般来讲,序列在实际开发过程中是经常用到的一种对象,通过它来生成主键是非常方便的,但是有些时候我们需要将其重新置零,通常采用的方式就是删除后重新创建。

下面我们来看一下另外一种方式:

SQL>createsequenceseq_1incrementby1startwith1maxvalue999999999;

序列已创建。SQL>createorreplaceprocedureseq_reset(v_seqnamevarchar2)as 2 nnumber(10); 3 tsqlvarchar2(100); 4 begin 5 executeimmediate'select'||v_seqname||'.nextvalfromdual'inton; 6 n:=-(n-1); 7 tsql:='altersequence'||v_seqname||'incrementby'||n; 8 executeimmediatetsql; 9 executeimmediate'select'||v_seqname||'.nextvalfromdual'inton; 10 tsql:='altersequence'||v_seqname||'incrementby1'; 11 executeimmediatetsql; 12 endseq_reset; 13 /

过程已创建。

SQL>selectseq_1.nextvalfromdual;

NEXTVAL--------- 2

SQL>/

NEXTVAL--------- 3

SQL>/

NEXTVAL--------- 4

SQL>/

NEXTVAL--------- 5

SQL>execseq_reset('seq_1');

PL/SQL过程已成功完成。

SQL>selectseq_1.currvalfromdual;

CURRVAL--------- 1

SQL>

这样可以通过随时调用此过程,来达到序列重置的目的。

此存储过程写的比较仓促,还可以进一步完善,在此就不再进一步讲述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: