目的 : 通过该功能取代 MSSQL 中的表 ID 列自动递增功能
主题一 : 如何通过 Sequence 名得到一个 Sequence 值
方法 :
1. 创建一个表 Sequence, 保存 Sequence 的值
2. 创建一个存储过程 GetNextSequence, 以通过它得到下一个 Sequence
主题二 : 如何通过一个表名得到一个 Sequence 值
1. 创建一个表 TableSequence, 保存表中的列对应的是哪个 Sequence
2. 创建一个存储过程 CreateTableSeq, 把表 TableSequence 的内容放入全局临时表 @@TmpTableSequence, 以提高性能
3. 创建一个存储过程 GetNextSequenceByTableName, 以通过它得到下一个 Sequence
主题一 : 如何通过 Sequence 名得到一个 Sequence 值
方法 :
1. 创建一个表 Sequence, 保存 Sequence 的值
表 Sequence:
表名
|
数据类型
|
是否为空
|
索引
|
说明
---|---|---|---|---
SEQNAME
|
varchar2(50)
|
N
|
PK
|
Sequence 名
STARTWITH
|
number
|
N
|
|
开始值
INCREMENT
|
number
|
N
|
|
增量
LASTVALUE
|
number
|
N
|
|
该 Sequence 最后的值
MINVALUE
|
number
|
N
|
|
最小值
MAXVALUE
|
number
|
N
|
|
最大值 ,0 表示无
CYCLE
|
bit
|
N
|
|
是否可循环
2. 创建一个存储过程 GetNextSequence, 以通过它得到下一个 Sequence
参数 :
SeqName Sequence 名称
返回 :
下一个 Sequence 的值 , 如出错 , 返回 0
流程 :
1. 该存储过程通过参数 SeqName 从表 Sequence 取得 LastValue
2. LastValue 加上递增或递减值 , 得到下一个 Sequence 值 ( 简称 @NewSeq)
3. 用 @NewSeq 更新该条记录
4. 返回 @NewSeq
主题二 : 如何通过一个表名得到一个 Sequence 值
1. 创建一个表 TableSequence, 保存表中的列对应的是哪个 Sequence
表 TableSequence
** 表名 ** ** **
|
** 数据类型 ** ** **
|
** 是否为空 ** ** **
|
** 索引 ** ** **
|
** 说明 ** ** **
---|---|---|---|---
TABLENAME
|
varchar2(50)
|
N
|
PK
|
表名
SEQNAME
|
varchar2(50)
|
N
|
|
Sequence 名
2. 创建一个存储过程 CreateTableSeq, 把表 TableSequence 的内容放入全局临时表 @@TmpTableSequence, 以提高性能
参数 :
无
返回 :
无
流程 :
1. 判断临时表 @@TmpTableSequence 是否存在
2. 如不存在 , 创建该临时表 ( 表格式同 TableSequence), 并从 TableSequence 取得数据 , 放入临时表 @@TmpTableSequence
3. 创建一个存储过程 GetNextSequenceByTableName, 以通过它得到下一个 Sequence
参数 :
@TableName 表名
返回 :
下一