SELECT DISTINCT (DECLARE CURSOR を使用)

構文
>>---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
他参照:

関連項目