當序列增加到一定值時利用pl/sql代碼塊回到某一值

例題如:

現有一序列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;

值爲100

第四步:

再將其增量改爲1.

alter sequence seq_order
      increment by 1;

?大功告成?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章