カーソルを宣言します。
Synopsis
DECLARE cursor-name CURSOR FOR query 
      FOR READ ONLY

DECLARE cursor-name CURSOR FOR query 
      FOR UPDATE
引数
cursor-name カーソルの名前。 識別子 です。
query カーソルの結果セットを定義する標準 SELECT 文。
FOR READ ONLY オプション — このカーソルによって行われる更新を防ぎます。カーソルは UPDATE、または DELETE 文の WHERE CURRENT OF 句では参照されません。
FOR UPDATE オプション — このカーソルを使用した更新を許可。これが既定です。
概要
DECLARE 文はカーソルに関する情報を指定し、後続の OPEN 文で使用されます。
その場合、クエリが ORDER BY 文を使用して順番を指定すると、FOR UPDATE キーワードは無視されますが、それ以外は更新の対象となりません。
SQL 文として、DECLARE は埋め込み SQL からのみサポートされます。同様の操作は、ODBC でも ODBC API を使用してサポートされます。
以下の埋め込み SQL は、EmpCursor という名前のカーソルを宣言して、オープン、フェッチ、クローズする例です。
   SET name="John Doe",state="##"
   &sql(DECLARE EmpCursor CURSOR FOR SELECT Name, Home_State
       INTO :name,:state FROM Sample.Person
       FOR READ ONLY)
   WRITE !,"BEFORE: Name=",name," State=",state
   &sql(OPEN EmpCursor)
   FOR { &sql(FETCH EmpCursor)
        QUIT:SQLCODE  
        WRITE !,"DURING: Name=",name," State=",state }
   &sql(CLOSE EmpCursor)
   WRITE !,"AFTER: Name=",name," State=",state
以下の例は、郵便番号が EmpZipCode の変数値と同じである全従業員の姓と名を含むため、DECLARE を使用して CURSOR EmpCursor を設定します。Caché ObjectScript の 組み込み SQL です。
   NEW EmpLast,EmpFirst,EmpZipCode
    &sql(DECLARE EmpCursor CURSOR FOR
     SELECT LastName,FirstName
     INTO :EmpLast,:EmpFirst
     FROM EmpTable where ZipCode = :EmpZipCode)
   SET EmpZipCode="02142"
      &sql(OPEN EmpCursor)
   IF (SQLCODE) {
     WRITE SQLCODE,!
     QUIT
     }
  SET SQLCODE = 0
  WHILE (SQLCODE = 0) {
   &sql(FETCH EmpCursor)
   WRITE !,EmpLast," ",EmpFirst
  }
  &sql(CLOSE EmpCursor)
  QUIT
関連項目
CLOSE カーソル FETCH OPEN WHERE CURRENT OF