例題如:
現有一序列SEQ_Order,其起始值爲100,其值增長步長被設定爲1,經一段時間使用後,當前的CURRVAL值爲235,現希望在不刪除序列的情況下將其CURRVAL值設置爲100,並使值增長步長仍爲1,以供後期使用。請寫出操作步驟(可有多個步驟,不一定只在一個PL/SQL程序中完成所有工作),並寫出操作步驟中使用的PL/SQL程序。 (涉及序列時步長只能在1和-1之間選擇)
所需知識點:
pl/sql代碼塊的into
步驟
第一步:
建立序列,起始值爲100,自增長爲1。
create sequence seq_order
increment by 1
start with 100;
/*剛創建序列時需要next一下才可以用currval查看當前序列號*/
select seq_order.nextval from dual;
select seq_order.currval from dual;
第二步:
利用循環使其值增長到235。
declare
v_currval number;
begin
for i in 1..135 loop
select seq_order.nextval into v_currval from dual;
//into 在這裏的作用是將查詢到的結果轉換爲number類型的以便於輸出。
dbms_output.put_line('值爲:'||v_currval);
end loop;
end;
/
這時序列的值爲235.
第三步:
改變自增量爲-1再利用循環使之值爲100
(注意起始值不允許改變所以只能改變增量值)
?以下爲改變增量爲-1
alter sequence seq_order
increment by -1;
select seq_order.currval from dual;
?以下爲用for循環使其值回到100
declare
v_currval number;
begin
for i in 1..135 loop
select seq_order.nextval into v_currval from dual;
dbms_output.put_line('值爲:'||v_currval);
end loop;
end;
/
這時的值回到了100,可以利用以下語句查詢一下:
select seq_order.currval from dual;
第四步:
再將其增量改爲1.
alter sequence seq_order
increment by 1;
?大功告成?