私は現在、COBOL を使用して DB2 に接続するシステムに取り組んでいます。サンプル ブラウズは、次のステートメントによって開始されます。
EXEC SQL
DECLARE <cursor name> CURSOR FOR
SELECT
<field names>
FROM <table name>
WHERE
<conditions>
ORDER BY
<key fields>
FOR FETCH ONLY
OPTIMIZE FOR 1 ROW
END-EXEC.
EXEC SQL
OPEN <cursor name>
END-EXEC.
ブラウズが成功したと判断されると、テーブルに対する後続の読み取りは、以下を使用して行われます。
EXEC SQL
FETCH <cursor name>
INTO
<variable names>
END-EXEC.
たとえば、テーブルを参照していて、返された結果セットが約 100,000 行である場合、処理に数時間かかります。システムの他のユーザーが、私がブラウズしているのと同じテーブルで処理している場合にデッドロック (-911) に遭遇しないことを確認できれば、これは問題ありません (処理とは、レコードの選択、更新、および場合によっては削除を意味します)。
実行中のブラウズ操作が他のユーザーにデッドロックを引き起こす可能性があるかどうかを判断するにはどうすればよいですか?
(注:更新は行っていません。純粋にデータを取得しているだけです)