位置指定更新および削除の実行

アプリケーションがアノテーション付きメソッドを使用し、DB2® データベースに対して実行される場合、位置指定更新および削除を実行できます。

始める前に

アプリケーションが以下の要件を満たしていることを確認します。
  • 位置指定更新および削除を実行できるのは、DB2 データ・ソースに対してだけです。
  • カーソルを宣言する SELECT ステートメントを実行するアノテーション付きメソッドは、ResultSet または Iterator を返す必要があります。
  • SELECT ステートメントを実行するメソッドの宣言と、UPDATE または DELETE ステートメントを実行するメソッドの宣言は、1 つのインターフェース内になければなりません。
  • カーソルに使用する名前の先頭は、DB2JCCCURSOR または DB_PDQ であってはなりません。
  • 2 つのカーソルが同名の場合、1 つの接続に対してその 2 つのカーソルを同時に開いてはなりません。
  • アプリケーションが以下のステップを実行すると、pureQuery は例外をスローします。
    1. 位置指定更新または削除に対するカーソルを宣言する SELECT ステートメントを実行する。
    2. 最終ステートメントが前に実行されたのと同じ接続に対して、同じ SELECT ステートメントを再度実行する。
    3. いずれかの SELECT ステートメントが宣言したカーソルを使用する UPDATE または DELETE ステートメントを実行する。
    pureQuery は、UPDATE または DELETE ステートメントが参照するのが 2 つのカーソルのいずれかを判別できません。

このタスクについて

アノテーション付きメソッドの構文図については、データベースに対して SQL を実行するアノテーション付きメソッドの構文の『位置指定更新および削除の構文』を参照してください。

手順

位置指定更新または削除を実行するコードを作成するには、次のようにします。

  1. カーソルを配置する SELECT ステートメントを実行するアノテーション付きメソッドを宣言する場合、@Cursor アノテーションの cursorName 属性を使用してカーソル名を指定します。 このメソッドは、java.sql.ResultSet オブジェクトまたは Iterator オブジェクトを返さなければなりません。
    重要: SELECT ステートメントに FOR UPDATE 節が含まれるが、@Cursor アノテーションの concurrency 属性を java.sql.ResultSet.CONCUR_READ_ONLY (デフォルト値) に設定した場合、FOR UPDATE 節がこの属性に優先します。pureQuery は、更新可能カーソルとしてカーソルを開きます。
  2. カーソルを使用する UPDATE または DELETE ステートメントを実行するアノテーション付きメソッドを宣言する場合、@Update アノテーションの positionedCursorName 属性を使用してカーソル名を指定します。

SELECT ステートメントおよび UPDATE ステートメントを使用する例については、データベースに対して SQL を実行するアノテーション付きメソッドの構文の『位置指定更新および削除の構文』のセクションを参照してください。

フィードバック