SELECT DISTINCT 文にカーソル名を関連付けて、FETCH 文を使用してデータ行を取得できます。
構文:
>>---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 |
取得する行の数または順序 (あるいはその両方) を制限するために指定するオプション。 |
例:
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
説明:
別々にコンパイルされた 2 つのプログラムでは、同じカーソルを共有できません。特定のカーソルを参照する文はすべて、まとめてコンパイルする必要があります。
SELECT DISTINCT 文は、カーソルを開く際に実行されます。SELECT DISTINCT 文には、次の規則が適用されます。
行セット内で重複している行を削除するには、SELECT INTO ではなく SELECT DISTINCT を使用します。