1
2
3
4
5
6
7
|
drop
table
if exists
sequence
;
create
table
sequence
(
seq_name
VARCHAR
(50)
NOT
NULL
,
-- 序列名稱
current_val
INT
NOT
NULL
,
--當前值
increment_val
INT
NOT
NULL
DEFAULT
1,
--步長(跨度)
PRIMARY
KEY
(seq_name)
);
|
1
2
3
4
5
6
7
8
9
10
11
|
[sql]
create
function
currval(v_seq_name
VARCHAR
(50))
returns
integer
begin
declare
value
integer
;
set
value = 0;
select
current_value
into
value
from
sequence
where
seq_name = v_seq_name;
return
value;
end
;
|
1
2
3
4
5
6
7
8
9
|
[sql]
create
function
nextval (v_seq_name
VARCHAR
(50))
return
integer
begin
update
sequence
set
current_val = current_val + increment_val
where
seq_name = v_seq_name;
return
currval(v_seq_name);
end
;
|
1
2
3
4
5
6
7
8
|
[sql]
create
function
setval(v_seq_name
VARCHAR
(50), v_new_val
INTEGER
)
returns
integer
begin
update
sequence
set
current_val = v_new_val
where
seq_name = v_seq_name;
return
currval(seq_name);
|