データベースに対して SQL を実行するアノテーション付きメソッドの構文

アノテーション付きメソッドの宣言構文については、以下の図を参照してください。

構文図および構文エレメントの説明は、以下のセクションに記載されています。

構文図で使用されている規則については、構文図の読み方を参照してください。

カーソルなしの SQL DML ステートメント、および DDL ステートメントを実行する場合の構文

以下の構文を使用して、カーソルを使用しない DML ステートメントを実行するアノテーション付きメソッドを宣言します。また、DDL ステートメントの実行にもこの構文を使用できます。

構文図を読む構文図をスキップする
>>-@Update--(--sql--=--"--SQL-statement--"--)------------------->

>--+------------------------------------------------------------------------------------------+-->
   '-@Handler--(--+-parameterHandler--=--class-name--------------------------------------+--)-'   
                  +-resultHandler--=--class-name--+------------------------------------+-+        
                  |                               '-,--parameterHandler--=--class-name-' |        
                  '-rowHandler--=--class-name--+------------------------------------+----'        
                                               '-,--parameterHandler--=--class-name-'             

>--modifiers--return-type--method-name--(--+-----------------------+--+------------------------------------+--);-><
                                           '-handler--handler-name-'  | .-,------------------------------. |       
                                                                      | V                                | |       
                                                                      '---parameter-type--parameter-name-+-'       

以下に示すのは、SELECT ステートメントを実行するメソッドの構文例です。

@Select(sql = "SELECT PID, QUANTITY, LOCATION FROM HEATHR.INVENTORY WHERE PID = ?")
Inventory getInventory(String pid);

以下に示すのは、INSERT ステートメントを実行するメソッドの構文例です。

@Update(sql = "INSERT INTO HEATHR.INVENTORY (PID, QUANTITY, LOCATION) VALUES (?, ?, ?)")
int createInventory(String pid, int quantity, String location);

CALL ステートメントを実行するための構文

以下の構文を使用して、CALL ステートメントを実行するアノテーション付きメソッドを宣言します。

構文図を読む構文図をスキップする
>>-@Call--(--sql--=--"--SQL-statement--"--)--------------------->

>--+------------------------------------------------------------------------------------------------------+-->
   '-@Handler--(--+-callHandlerWithParameters--=--class-name--+------------------------------------+-+--)-'   
                  |                                           '-,--parameterHandler--=--class-name-' |        
                  '-parameterHandler--=--class-name--------------------------------------------------'        

>--modifiers--return-type--method-name--(--+-----------------------+--+------------------------------------+--);-><
                                           '-handler--handler-name-'  | .-,------------------------------. |       
                                                                      | V                                | |       
                                                                      '---parameter-type--parameter-name-+-'       

@Call(sql = "Call MYSCHEMA.BONUS_INCREASE( :p_bonusfactor, :p_bonusmaxsumfordept, 
	  :p_deptswithoutnewbonuses, :p_countdeptsviewed, :p_countdeptsbonuschanged, 
	  :p_errormsg )")
StoredProcedureResult callBONUS_INCREASE(Bonus_increaseParam parms);

SELECT ステートメントを実行するための構文

以下の構文を使用して、SELECT ステートメントを実行するアノテーション付きメソッドを宣言します。@Cursor アノテーションを使用する場合、java.sql.ResultSet をインターフェースにインポートする必要があります。

構文図を読む構文図をスキップする
>>-@Select--(--sql--=--"--SQL-statement--"--)------------------->

>--+-----------------------------------------------------------------------------------------+-->
   |                 .-,-------------------------------------------------------------------. |   
   |            (1)  V                                .-false-.                            | |   
   '-@Cursor--(--------+-allowStaticRowsetCursors--=--+-true--+--------------------------+-+-'   
                       |                 .-java.sql.ResultSet.CONCUR_READ_ONLY-.         |       
                       +-concurrency--=--+-java.sql.ResultSet.CONCUR_UPDATABLE-+---------+       
                       |                 .-java.sql.ResultSet.CLOSE_CURSORS_AT_COMMIT--. |       
                       +-holdability--=--+-java.sql.ResultSet.HOLD_CURSORS_OVER_COMMIT-+-+       
                       |          .-java.sql.ResultSet.TYPE_FORWARD_ONLY-------.         |       
                       '-type--=--+-java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE-+---------'       
                                  '-java.sql.ResultSet.TYPE_SCROLL_SENSITIVE---'                 

>--+------------------------------------------------------------------------------------------+-->
   '-@Handler--(--+-parameterHandler--=--class-name--------------------------------------+--)-'   
                  +-resultHandler--=--class-name--+------------------------------------+-+        
                  |                               '-,--parameterHandler--=--class-name-' |        
                  '-rowHandler--=--class-name--+------------------------------------+----'        
                                               '-,--parameterHandler--=--class-name-'             

>--modifiers--return-type--method-name--(--+-----------------------+--+------------------------------------+--);-><
                                           '-handler--handler-name-'  | .-,------------------------------. |       
                                                                      | V                                | |       
                                                                      '---parameter-type--parameter-name-+-'       

注:
  1. @Cursor アノテーション内でオプションを使用できるのは、1 度だけです。

@Select (sql="select PUBLISHER_ID, BOOK_NAME, BOOK_ID, COUNTY 
	  from BOOKS WHERE STATE='CALIFORNIA'")
@Cursor (concurrency = ResultSet.CONCUR_READ_ONLY, 
	  type=ResultSet.TYPE_FORWARD_ONLY, 
	  holdability=ResultSet.HOLD_CURSORS_OVER_COMMIT)
Iterator<Books> getBooksInCaliforniaAndNameCursor ();

位置指定更新および削除の構文

以下の構文は、位置指定更新および削除を実行するためのアノテーション付きメソッドを宣言する場合に使用します。@Cursor アノテーションを使用する場合、java.sql.ResultSet をインターフェースにインポートする必要があります。

位置指定更新および削除のアノテーション付きメソッドの作成に関する情報については、位置指定更新および削除の実行を参照してください。

位置指定更新または削除用のカーソルを開き、名前を設定する SELECT ステートメントを実行するメソッドの構文

構文図を読む構文図をスキップする
>>-@Select--(--sql--=--"--SQL-statement--"--)------------------->

>--+------------------------------------------------------------------------------------------------------------------------------+-->
   |                                               .-,-----------------------------------------------------------------------.    |   
   |                                               V  (1)                  .-java.sql.ResultSet.CONCUR_READ_ONLY-.           |    |   
   '-@Cursor--(--cursorName--=--"--cursor-name--"--------+-concurrency--=--+-java.sql.ResultSet.CONCUR_UPDATABLE-+---------+-+--)-'   
                                                         |                 .-java.sql.ResultSet.CLOSE_CURSORS_AT_COMMIT--. |          
                                                         +-holdability--=--+-java.sql.ResultSet.HOLD_CURSORS_OVER_COMMIT-+-+          
                                                         |          .-java.sql.ResultSet.TYPE_FORWARD_ONLY-------.         |          
                                                         '-type--=--+-java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE-+---------'          
                                                                    '-java.sql.ResultSet.TYPE_SCROLL_SENSITIVE---'                    

>--+---------------------------------------------------------------------------------------+-->
   '-@Handler--(--+-parameterHandler--=--class-name-----------------------------------+--)-'   
                  '-rowHandler--=--class-name--+------------------------------------+-'        
                                               '-,--parameterHandler--=--class-name-'          

>--modifiers--+-Iterator-----------+--method-name--(--+-----------------------+--+------------------------------------+--);-><
              '-java.sql.ResultSet-'                  '-handler--handler-name-'  | .-,------------------------------. |       
                                                                                 | V                                | |       
                                                                                 '---parameter-type--parameter-name-+-'       

注:
  1. @Cursor アノテーション内でこれらのオプションを使用できるのは、1 度だけです。

名前付きカーソルを使用する UPDATE または DELETE ステートメントを実行するメソッドの構文

構文図を読む構文図をスキップする
>>-@Update--(--sql--=--"--SQL-statement--"--,--positionedCursorName--=--"--cursor-name--"--)-->

>--+-------------------------------------------------+---------->
   '-@Handler--(--parameterHandler--=--class-name--)-'   

>--modifiers--return-type--method-name--(--+-----------------------+--+------------------------------------+--);-><
                                           '-handler--handler-name-'  | .-,------------------------------. |       
                                                                      | V                                | |       
                                                                      '---parameter-type--parameter-name-+-'       

以下に示すのは、位置指定更新および削除用のカーソルを開く SELECT ステートメントを実行するメソッドの構文例です。

@Select (sql="select PUBLISHER_ID, BOOK_NAME, BOOK_ID, COUNTY 
	  from BOOKS WHERE STATE='CALIFORNIA' FOR UPDATE OF PUBLISHER_ID")
@Cursor (concurrency = ResultSet.CONCUR_UPDATABLE, 
	  type=ResultSet.TYPE_FORWARD_ONLY, 
	  holdability=ResultSet.HOLD_CURSORS_OVER_COMMIT,
	  cursorName="TESTCURSORITER")
Iterator<Books> getBooksInCaliforniaAndNameCursor ();

以下に示すのは、カーソルを使用する UPDATE ステートメントを実行するメソッドの構文例です。

@Update (sql="update BOOKS SET PUBLISHER_ID = :publisher_id", 
	  positionedCursorName = "TESTCURSORITER")
int updateBooksByUsingNamedCursor (Book b);
重要: WHERE 節は、UPDATE または DELETE ステートメントに入れないでください。WHERE 節を入れると、このユーティリティーを実行する前にロギングのオプションを構成する場合、pureQuery は、インターフェースのインプリメンテーションの作成時にエラーをログに記録します。pureQuery は、ステートメントに WHERE CURRENT OF 節を追加します。

構文要素の説明

@Call
メソッドが SQL CALL ステートメントを実行することを指定します。
sql
実行するメソッドの CALL ステートメントを指定します。
@Cursor
SELECT ステートメントのカーソルの属性を指定します。 このアノテーションを使用できるのは、@Select アノテーションも使用している場合に限ります。
allowStaticRowsetCursors
DB2 Universal Database for z/OS® バージョン 8 (New Function Mode: 新機能モード) または DB2 for z/OS バージョン 9.1 のデータ・ソースを使用し、そのデータ・ソースへの接続に IBM® Data Server Driver for JDBC and SQLJ を使用している場合、SELECT ステートメントが静的に実行される時に、このステートメントに関連付けられているカーソルが行セット・カーソルであるかどうかを指定します。
false
SELECT ステートメントが静的に実行される時に、ステートメントに関連付けられたカーソルが行セット・カーソルではないことを指定します。
これはデフォルト値です。
true
SELECT ステートメントが静的に実行される時に、ステートメントに関連付けられたカーソルが行セット・カーソルであることを指定します。値を true に設定した場合、以下の制限を順守する必要があります。
  • 行セット・カーソルの使用を許可する SQL ステートメントは、メソッドの @Select アノテーションに指定する SELECT ステートメントである。
  • アノテーション付きメソッドの戻りの型は、pureQuery に対してデータベースから 1 行のみを選択するようには指図しない。
  • 照会結果の列のデータ・タイプが、LOB あるいは XML のいずれでもない。
  • ステートメントが開くカーソルは、読み取り専用である。静的な更新可能カーソルが行セットを使用する場合、結果が予測不能である。

    pureQuery では、以下のいずれかの条件が真の場合に、ステートメントを更新可能とみなします。

    • 並行性属性が java.sql.ResultSet.CONCUR_UPDATABLE に設定されていない。
    • SQL ステートメントに FOR UPDATE 節が含まれていない。
    pureQuery では、ステートメントが更新可能でない場合、そのステートメントは読み取り専用とみなします。
  • アノテーション付きメソッドが、Java ストアード・プロシージャーによって呼び出されることがない。
concurrency
java.sql.ResultSet.CONCUR_READ_ONLY
照会結果が開いている間、カーソルが更新をできなくすることを指定する整数定数。
java.sql.ResultSet.CONCUR_UPDATABLE
照会結果が開いている間、カーソルが更新を許可することを指定する整数定数。
cursorName
位置指定更新および削除に使用するカーソルの名前を指定します。名前の先頭を、DB2JCCCURSOR および DB_PDQ にすることはできません。 また、この名前は、ご使用のデータベースのカーソルの命名規則に従う必要があります。
holdability
java.sql.ResultSet.CLOSE_CURSORS_AT_COMMIT
カーソルがトランザクションの最後に閉じられることを指定する整数定数。
java.sql.ResultSet.HOLD_CURSORS_OVER_COMMIT
カーソルがトランザクションの最後も開いたままであることを指定する整数定数。
type
java.sql.ResultSet.TYPE_FORWARD_ONLY
カーソルが下方にのみ移動できることを指定する整数定数。
java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE
カーソルが下方および上方に移動できることを指定する整数定数。照会結果は、データのスナップショットを提供します。
java.sql.ResultSet.TYPE_SCROLL_SENSITIVE
カーソルが下方および上方に移動できることを指定する整数定数。照会結果は、カーソルが保持されている間にデータに行われた変更を反映します。
@Handler
アノテーション付きメソッドの実行時に、pureQuery のデフォルトのプロシージャーではなく、指定されたインプリメンテーション・クラスを指定するように、pureQuery に指示します。
callHandlerWithParameters
com.ibm.pdq.handlers.CallHandlerWithParameters<CAL> インターフェースのインプリメンテーションを指定します。この属性を指定した場合、pureQuery は、クラスを使用して SQL ストアード・プロシージャー呼び出しの結果を処理し、アノテーション付きメソッドから戻されるオブジェクトを作成します。クラスの handleCall() メソッドは、SQL ストアード・プロシージャー呼び出しの結果を処理し、結果が記述された <CAL> 型のオブジェクトを戻します。
parameterHandler
com.ibm.pdq.handlers.ParameterHandler インターフェースのインプリメンテーションを指定します。この属性を指定した場合、pureQuery は、クラスを使用して、SQL ステートメント用の java.sql.PreparedStatement に対するパラメーター値を設定します。
アノテーション付きメソッドが、ストアード・プロシージャーを呼び出す場合、ParameterHandler はあらゆる OUT および INOUT パラメーターを登録する必要があります。
resultHandler
com.ibm.pdq.handlers.ResultHandler<RES> インターフェースのインプリメンテーションを指定します。この属性を指定した場合、pureQuery は、クラスを使用して、アノテーション付きメソッドから戻されるオブジェクトを作成します。クラスの handle() メソッドは、SQL ステートメント用の java.sql.ResultSet を処理し、<RES> 型のオブジェクトとして内容を戻します。
rowHandler
com.ibm.pdq.handlers.RowHandler<ROW> インターフェースのインプリメンテーションを指定します。この属性を指定した場合、pureQuery は、クラスを使用して、アノテーション付きメソッドから戻される照会結果の各行を示すオブジェクトを作成します。このクラスの handle() メソッドは、SQL ステートメント用の java.sql.ResultSet からの 1 つの行を処理し、<ROW> 型のオブジェクトとして内容を戻します。
@Select
メソッドが SQL SELECT ステートメントを実行することを指定します。
sql
実行するメソッドの SELECT ステートメントを指定します。
@Update
メソッドが SQL データ操作言語 (DML) またはデータ定義言語 (DDL) ステートメントを実行することを指定します。
sql
実行するメソッドの SQL ステートメントを指定します。
positionedCursorName
位置指定更新および削除に使用するカーソルの名前を指定します。名前は、@Select アノテーションの cursorName 属性に定義されていなければなりません。
この属性を使用するメソッドを宣言するインターフェースのインプリメンテーションを生成する場合、pureQuery は、必要な WHERE CURRENT OF 節を UPDATE または DELETE ステートメントに追加します。
method-name
インターフェース・メソッドの名前を指定します。
parameter-type parameter-name

繰り返し型の引数ペアで、メソッド起動時に期待される引数の型と名前を示します。

こうしたパラメーターは、以下の規則に従って、SQL ステートメントで指定されるパラメーター・マーカーと突き合わされます。こうしたパラメーターは、スカラー型、Bean クラス、または Map オブジェクトが可能です。SQL のパラメーター参照に :name 表記が使用されている場合には、最初の parameter-type は Bean または Map でなければなりません。 Bean または Map のプロパティー名が、SQL ストリング内での :name の出現箇所との突き合わせに使用されます。

SQL で ? 表記がパラメーター参照に使用されている場合には、スカラー値だけを指定できます。

?n および ?n.name 表記が使用される場合には、メソッド・パラメーターをすべてスカラー型にするか、Bean クラスと Map オブジェクトの組み合わせにする必要があります。

通常、指定のパラメーターは入力変数にのみ使用されます。ただし、SQL CALL ステートメントの OUT パラメーターまたは INOUT パラメーターの場合には、出力変数を表す場合があります。詳しくは、CALL ステートメントのサポートについて取り上げた前述のセクションを参照してください。

return-type
メソッドの戻りの型を指定します。

以下の表には、@Call、@Select、および @Update の各アノテーションを使用するメソッドで可能な戻りの型が示されています。

表 1. 戻りの型に関する表のキー
省略形 意味
CAL CallHandlerWithParameters
I Iterator
L List
M Map
O Object
R java.sql.ResultSet
RES ResultHandler
ROW RowHandler
S String
SPR StoredProcedureResult
T プリミティブ型 int、プリミティブ Java 型のラッパー・クラス、単純な Object 型、または Bean。T を int にできるのは @Update アノテーションの場合だけで、@Update アノテーションでは T を int にする必要があります。
表 2. アノテーションの型に応じた戻りの型
    アノテーション
    @Call @Select @Update
戻りの型 CAL    
int    
int[]    
I<M<S,O>>  
I<T>  
L<M<S,O>>  
L<T>  
M<S,O>    
M<S,O>[]  
R    
RES    
ROW    
ROW[]    
L<ROW>    
I<ROW>    
SPR    
<T>    
<T>[]  
void  
注: 複数の ResultSet オブジェクトを戻すストアード・プロシージャーの使用時に、これらのオブジェクトをすべて使用する場合は、戻りの型 StoredProcedureResult を使用するか、CallHanderWithParameters<CAL> インターフェースのインプリメンテーションを使用します。@Call アノテーションと併用できる他のすべての戻りの型は、ストアード・プロシージャーに対する呼び出しから、最初の ResultSet オブジェクトのみ戻します。

アノテーション付きメソッドを使用する場合は、@Select または @Call がプリミティブ Java タイプ、つまり ArrayList、または Iterator を戻すことを指定しないでください。

SQL NULL 値に関する情報は、SQL から照会された情報がプリミティブ Java タイプに格納されると失われます。 さらに、Java は、<primitive Java type>.class の汎用 <T> クラスを指定する汎用メソッドが、そのプリミティブ Java タイプに適したラッパー・クラスのインスタンスを戻すように要求します。

例えば、Java は以下のようなメソッドの起動を許可しません。
int tCount = myGenericMethod( int.class );
ここで、以下は myGenericMethod の定義です。
<T> T myGenericMethod( Class<T> cl );
tCount の宣言されたクラスは Integer でなければなりません。
Integer tCount = myQuery.myGenericMethod( Integer.class );

アノテーション付きインターフェースで定義されたメソッド・シグニチャーで、汎用メソッド・シグニチャーを明示的に使用しない (<T> および戻りクラス情報は使用しない) 場合であっても、この制約事項は汎用メソッドの使用に関連します。アノテーション付きインターフェースの生成済みインプリメンテーションでは、インライン・メソッド API と一部の面で類似したメソッドを使用しているために、この制約事項が必要とされます。特に、このインプリメンテーションでは汎用メソッドを使用します。

void
メソッドが何も戻さないことを指定します。
java.sql.ResultSet
ResultSet オブジェクトを戻すことを指定します。 ResultSet は読み取り専用です。
StoredProcedureResult
StoredProcedureResult は、CALL ステートメントを呼び出す @Call アノテーション付きメソッドの戻りの型としてのみ有効です。 メソッドの実行後、StoredProcedureResult オブジェクトを使用して、ストアード・ルーチンによって戻される複数の照会結果を処理したり、出力パラメーターにアクセスしたりできます。
int
メソッドが更新行のカウントを戻すことを指定します。
int[]
メソッドが整数の配列を戻すことを指定します。配列内の各要素は、SQL データ操作言語 (DML) ステートメントの単一の実行での更新カウントを記録します。バッチ更新には、この戻りの型を使用します。
List<Map<String,Object>>
メソッドが Map<String,Object> オブジェクトのリストを戻すことを指定します。
詳しくは、戻される Map<String,Object> オブジェクトの説明を参照してください。

基礎となるデータベース ResultSet オブジェクトは閉じられます。

List<T>
タイプ T の List オブジェクトが戻されることを指定します。 指定された SQL ステートメントが照会である場合、各エレメントは照会結果の行に対応します。

<T> オブジェクトが CALL ステートメントによって戻されると、そのオブジェクトに追加されたデータのソースは、ストアード・プロシージャーが戻す最初の ResultSet オブジェクトになります。

<T> オブジェクトが SELECT ステートメントによって戻される場合には、そのオブジェクトに追加されるデータのソースは照会結果です。

メソッドが呼び出され、基礎となるデータベース ResultSet オブジェクトが閉じられると、すべての照会結果の行がマテリアライズされます。
Map<String,Object>
Map<String,Object> オブジェクトが構成されて戻されることを指定します。照会結果の戻り列ラベルが、Map のキーになります。一般的な Java コーディング・スタイルへの準拠性を高めるために、列ラベルは小文字に変換されます。 照会結果の行からの対応する列値は、Map オブジェクトの値になります。 複数の行が該当する場合、最初の行からの値が戻されます。

Map<String,Object> オブジェクトが CALL ステートメントによって戻されると、そのオブジェクトに追加されたデータのソースは、ストアード・プロシージャーが戻す最初の ResultSet オブジェクトになります。

Map<String,Object> オブジェクトが SELECT ステートメントによって戻される場合には、そのオブジェクトに追加されるデータのソースは照会結果です。

基礎となるデータベース ResultSet オブジェクトは閉じられます。

Map<String,Object>[]
Map<String,Object> オブジェクトの配列を構成して戻すように指定します。戻される Map<String,Object> オブジェクトの説明を参照してください。

基礎となるデータベース ResultSet オブジェクトは閉じられます。

<T>

スカラーまたは Bean が戻されることを指定します。スカラーは、Double などのラッパー、または StringDateTimestamp にすることができます。

提供された SQL ステートメントが照会であり、複数の行が該当する場合、最初の行からの値が戻されます。

基礎となるデータベース ResultSet オブジェクトは閉じられます。

<T>[]
Employee[]Integer[]、または String[] などの、タイプ T の配列が戻されることを指定します。
  • 指定された SQL ステートメントが照会である場合、各エレメントは照会結果の行に対応します。
  • <T> オブジェクトが CALL ステートメントによって戻されると、そのオブジェクトに追加されたデータのソースは、ストアード・プロシージャーが戻す最初の ResultSet オブジェクトになります。
  • 指定の SQL ステートメントが照会ではない場合、または ResultSet を戻す CALL ステートメントではない場合、配列の各要素は、戻された更新カウントをステートメントに設定する int でなければなりません。
メソッドが呼び出され、基礎となるデータベース ResultSet オブジェクトが閉じられると、すべての照会結果の行がマテリアライズされます。
Iterator<Map<String,Object>>

Map<String,Object> オブジェクトの Iterator が戻されることを指定します。詳しくは、戻される Map<String,Object> オブジェクトの説明を参照してください。

照会結果行は、Iterator でそれぞれの next() 操作をアプリケーションが実行する際にデータ・ソースから取り出されます。

pureQuery における反復子のタイプは ResultIterator です。使用し終えたら、ResultIterator.close() メソッドでそれらの反復子を閉じる必要があります。

Iterator<T>

Iterator オブジェクトが、行に対応する各エレメントとともに戻されることを指定します。 パラメーター化されたタイプ T を指定する必要があります。

照会結果行は、Iterator でそれぞれの next() 操作をアプリケーションが実行する際にデータ・ソースから取り出されます。

<T> オブジェクトが CALL ステートメントによって戻されると、そのオブジェクトに追加されたデータのソースは、ストアード・プロシージャーが戻す最初の ResultSet オブジェクトになります。

<T> オブジェクトが SELECT ステートメントによって戻される場合には、そのオブジェクトに追加されるデータのソースは照会結果です。

pureQuery における反復子のタイプは ResultIterator です。使用し終えたら、ResultIterator.close() メソッドでそれらの反復子を閉じる必要があります。

sql
関連したメソッドが呼び出されたときに実行する SQL ステートメントを提供します。 SQL ステートメントは、ターゲット・データベースで有効でなければなりません。 pureQuery はいくつかのパラメーター・マーカーも定義しています。これらのマーカーは、インライン・メソッドまたはアノテーション付きメソッドの入力パラメーターに対応します。
一部の JDBC ドライバーで CALL ステートメントを実行する場合には、JDBC/ODBC エスケープ・シーケンスを使用する必要があります。

フィードバック