>>---EXEC SQL--.------------.------DECLARE cursor_name----> +-AT db_name-+ >---CURSOR FOR------SELECT DISTINCT------select_list------> >---FROM----table_list--.-----------------2--END-EXEC---->< +-select_options--+
db_name | DECLARE DATABASE を使用して宣言されているデータベースの名前。 |
cursor_name | 以後の文でカーソルを示すために使用されるカーソル名。 カーソル名には、ファイル名に使用できる文字を指定できます。また、カーソル名は 30 文字以内で指定します。 最初の文字は数字以外の文字にする必要があります。 |
select_list | 検索する列の名前。 |
table_list | select_list で指定した検索対象となる列を含むテーブルの名前。 |
select_options | 検索する行数または検索する行の順序 (またはその両方) を制限するためのオプション。 |
DECLARE CURSOR 文によりカーソル名を SELECT DISTINCT 文に関連付け、FETCH 文を使用してデータ行を検索することができます。
別々にコンパイルした 2 つのプログラムでは、同じカーソルを共有できません。 特定のカーソルを参照するすべての文は、すべて同時にコンパイルする必要があります。
SELECT DISTINCT 文は、カーソルが開くときに実行されます。 SELECT DISTINCT 文には次の規則が適用されます。
注: 行セットにある重複行を削除するには、SELECT INTO ではなく SELECT DISTINCT を使用します。
01 age-array pic s9(09) comp-5 occurs 10 times. 01 lname-array pic x(32) occurs 10 times. MOVE 5 TO staff-id EXEC SQL SELECT DISTINCT last_name INTO :lname-array FROM staff WHERE staff_id > :staff-id END-EXEC EXEC SQL SELECT DISTINCT age INTO :age-array FROM staff WHERE first_name > 'George' END-EXEC