Symfoware Server SQLビギナーズガイド - FUJITSU - |
目次 索引 |
第6章 いろいろなデータ操作の方法 |
作成した順序に対して、CURRVALおよびNEXTVALを使用して順序番号を取り出すことができます。CURRVALは、アプリケーション内の現在の順序番号を取り出します。NEXTVALは、RDBシステム内で取り出した最後の順序番号の次の値を取り出します。
CURRVALおよびNEXTVALはアプリケーションおよびストアドプロシジャの以下のSQL文の箇所に指定できます。
単一行SELECT文の選択リスト
問合せ指定の選択リスト:カーソル指定の問合せ式のみ
UPDATE文のSET句
INSERT文に指定した問合せ指定の選択リスト
INSERT文のVALUES句
ストアドプロシジャのSET文
被トリガSQL文
なお、CURRVALおよびNEXTVALは、以下のSQL文の箇所には指定できません。
WHERE句の探索条件
副問合せの選択リスト
ALTER TABLE ADD COLUMNのDEFAULT句
SELECT文の場合、順序番号は検索結果の行に対して採番されます。
UPDATE文の場合は、更新行に対して採番されます。また、INSERT文の場合は、挿入先の挿入行に対して採番されます。いずれの場合も、結果が複数件ある場合は、結果の各行に対して採番されます。
セション内で最初に順序番号を取り出す場合は、NEXTVALで順序番号を取り出してください。
1つのSQL文中で、同じ順序のNEXTVALを複数個指定している場合は、すべて同じ順序番号が返却されます。また、1つのSQL文中で、同じ順序のNEXTVALとCURRVALの両方を指定している場合は、それらが文中で出現する順番にかかわらず、NEXTVALとCURRVALの両方に対して、NEXTVALとして採番された同じ順序番号が返却されます。
例1
アプリケーションのSQL文中に順序を指定する方法を示します。従業員番号を増加させ、新しい従業員のためにその値を割り振ります。
順序の定義 CREATE SEQUENCE 会社管理.順序1 INCREMENT BY 1 START WITH 1 アプリケーションのSQL文中の順序の指定 INSERT INTO 会社管理.従業員表 VALUES ( 会社管理.順序1.NEXTVAL , "山田太郎",200000, "企画部" ) (1)
(1) 順序
例2
順序を使用して挿入行に自動的に順序番号を入れる方法を示します。受注表の受注番号を増加させ、新しい受注番号を割り振ります。挿入行に自動的に順序番号を入れるには、表定義の列にDEFAULT句で順序を指定します。アプリケーションのINSERT文では、DEFAULTに順序を指定した列を省略するか、挿入値にDEFAULTと指定します。
順序の定義 CREATE SEQUENCE 在庫管理.順序1 INCREMENT BY 1 START WITH 1 MAXVALUE 10000 表の定義 CREATE TABLE 在庫管理.受注表( 受注番号 INTEGER DEFAULT 在庫管理.順序1.NEXTVAL NOT NULL , (1) 顧客コード DECIMAL(5,0) NOT NULL, 商品番号 CHAR(4) NOT NULL, 数量 INTEGER) アプリケーションのSQL文の指定 INSERT INTO 在庫管理.受注表(顧客コード, 商品番号,数量) VALUES ( 12345,'A002',5)(1) 順序
例3
在庫管理.順序1の順序番号を、CURRVALおよびNEXTVALを指定して参照する例を示します。
CURRVALを指定して現在の順序番号を参照します。 SELECT 在庫管理.順序1.CURRVAL (1) FROM RDBII_SYSTEM.RDBII_ASSISTTABLE (注) NEXTVALを指定して次の順序番号を参照します。 SELECT 在庫管理.順序1.NEXTVAL (2) FROM RDBII_SYSTEM.RDBII_ASSISTTABLE (注)(1) 順序
(2) 順序
注) RDBII_ASSISTTABLEは、SQL文を簡易的に実行するための表です。この表には1の値を持つデータが1件格納されています。選択リストに日時関数、順序などを記述した単一行SELECT文を実行して、現在の時刻、CURRVAL値などを取得する場合に利用できます。
目次 索引 |