数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
不通过删除重建方式 重置序列值得简单方式。

作者:未知 来源:月光软件站 加入时间:2005-5-13 月光软件站

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

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

SQL> create sequence seq_1 increment by 1 start with 1 maxvalue 999999999;

序列已创建。
SQL> create or replace procedure seq_reset(v_seqname varchar2) as
  2  n number(10);
  3  tsql varchar2(100);
  4  begin
  5  execute immediate 'select '||v_seqname||'.nextval from dual' into n;
  6  n:=-(n-1);
  7  tsql:='alter sequence '||v_seqname||' increment by '|| n;
  8  execute immediate tsql;
  9  execute immediate 'select '||v_seqname||'.nextval from dual' into n;
 10  tsql:='alter sequence '||v_seqname||' increment by 1';
 11  execute immediate tsql;
 12  end seq_reset;
 13  /

过程已创建。

SQL> select seq_1.nextval from dual;

  NEXTVAL
---------
        2

SQL> /

  NEXTVAL
---------
        3

SQL> /

  NEXTVAL
---------
        4

SQL> /

  NEXTVAL
---------
        5

SQL> exec seq_reset('seq_1');

PL/SQL 过程已成功完成。

SQL> select seq_1.currval from dual;

  CURRVAL
---------
        1

SQL>

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

此存储过程写的比较仓促,还可以进一步完善,在此就不再进一步讲述。




相关文章

相关软件