>>---EXEC SQL---.-----------------.--.------------.----->
                +--FOR :row_count-+  +-AT db_name-+
                                  +------ ,--------+
                                  V                |
 >---UPDATE---table_name-----SET--column_expression----->
 >--WHERE CURRENT OF--cursor_name---END-EXEC---><
| :row_count | 整数型のホスト変数。結果およびパラメーターのホスト変数がすべて同じサイズの配列で、すべての要素を使用するわけではない場合に、使用する行数を指定します。 UPDATE が DECLARE CURSOR 文の一部である場合、FOR 句を使用できません。 | 
| db_name | DECLARE DATABASE を使用して宣言されているデータベースの名前。 | 
| table_name | 更新するテーブル。 | 
| column_expression | 特定の列名の値。 この値には式または NULL 値を使用できます。 | 
| cursor_name | 宣言後に開かれ、取り込まれたカーソル。 | 
ODBC は位置指定更新をサポートします。位置指定更新では、拡張構文でカーソルを使用して、最後に取り込まれた行を更新します (ODBC 1.0 では主要構文で更新されていましたが、ODBC 2.0 では拡張構文に移行しました)。 すべてのドライバが位置指定更新をサポートしているわけではありません。ただし、OpenESQL では、位置指定更新および位置指定削除を容易にできるように ODBC カーソル名を COBOL カーソル名と同じに設定します。
ODBC ドライバによっては、カーソルが使用する SELECT 文に、位置指定更新を可能にする FOR UPDATE 句を指定する必要があります。
標準 SQL 文で使用されるもう 1 つの形式 UPDATE は、検索更新と呼ばれます。
位置指定更新ではホスト配列を使用できません。
ほとんどのデータソースでは、特定の組み合わせの SCROLLOPTION と CONCURRENCY を SET 文または DECLARE CURSOR 文で指定する必要があります。
ODBC カーソルのライブラリにより、位置指定更新を制限付きで実装できます。この場合は、SQL(USECURLIB=YES) でコンパイルし、SCROLLOPTION STATIC および CONCURRENCY OPTCCVAL (または OPTIMISTIC) を使用してその更新を行うことができます。
     EXEC SQL CONNECT TO 'srv1' USER 'sa' END-EXEC
     EXEC SQL DECLARE C1 CURSOR FOR
        SELECT last_name, first_name
        FROM staff
        FOR UPDATE
     END-EXEC
     EXEC SQL
        OPEN C1
     END-EXEC
     PERFORM UNTIL SQLCODE NOT = ZERO
        EXEC SQL
            FETCH C1 INTO :fname,:lname
        END-EXEC
        IF SQLCODE = ZERO
           DISPLAY fname " " lname
           DISPLAY "Update?"
           ACCEPT reply
           IF reply = "y"
              DISPLAY "New last name?"
              ACCEPT lname
              EXEC SQL
                 UPDATE staff
                 SET last_name=:lname WHERE CURRENT OF c1
              END-EXEC
              DISPLAY "update sqlcode=" SQLCODE
            END-IF
        END-IF
     END-PERFORM
     EXEC SQL DISCONNECT ALL END-EXEC
     STOP RUN.