Java CallableStatementインタフェースを使ってストアドプロシージャを呼び出す




ある程度のロジック量がある場合、JavaでSQLをちょこちょこ発行すると時間を要してしまいます。
DB側のロジックにまとめて処理してもらった方が効率的です。
・・・ということで、今回は、ストアドプロシージャを呼び出してみます。

CallableStatementを利用してストアドプロシージャを呼び出すサンプル

DBMS_xxxxシリーズの1つ。sleepプロシージャを呼び出して、10秒間スリーブしてみます。

実行結果

10秒間ストアドプロシージャ側で待ちます。

サンプルの解説

PreparedStatementの使い方とほぼ同じです。
Connection#prepareCall(String)で、プロシージャを指定します。
引数はPreparedStatement同様に、後からセットします。
ストアドプロシージャは、CallableStatement#execute()で実行します。

余談ですが、DBMS_LOCK.SLEEPは、そのままでは使えません。GRANTしてあげてくださいw