プライマリ・コンテンツに移動
Pro*C/C++プログラマーズ・ガイド
12c リリース1(12.1)
B71397-03
目次へ移動
目次
索引へ移動
索引

前
次

コミットにまたがるフェッチについて

COMMITとFETCHを併用する場合は、CURRENT OF句を使用しないでください。かわりに、各行のROWIDをSELECTしてから、その値を使用して更新または削除中の現在行を識別します。次に例を示します。

... 
EXEC SQL DECLARE emp_cursor CURSOR FOR 
    SELECT ename, sal, ROWID FROM emp WHERE job = 'CLERK'; 
... 
EXEC SQL OPEN emp_cursor; 
EXEC SQL WHENEVER NOT FOUND GOTO ... 
for (;;) 
{ 
    EXEC SQL FETCH emp_cursor INTO :emp_name, :salary, :row_id; 
    ... 
    EXEC SQL UPDATE emp SET sal = :new_salary 
        WHERE ROWID = :row_id; 
    EXEC SQL COMMIT; 
... 
} 

ただし、FETCHされた行はロックされません。つまり、ある行を読み取っても、その行を更新または削除する前に別のユーザーがその行を変更すると、結果が一貫性のないものになる可能性があります。