Java の prepareCall() メソッドでストアドプロシージャを実行する方法
Javaでは、prepareCall()メソッドはデータベースのストアドプロシジャを実行するために使用されます。これは、PreparedStatementインターフェースの子インターフェースCallableStatementのメソッドの一つです。prepareCall()メソッドは、プレースホルダー付きのSQLクエリ文を受け取ることができ、プレースホルダーはストアドプロシジャのパラメータを表すために使用されます。プレースホルダーを使用することで、SQLインジェクション攻撃を回避し、コードの可読性と保守性を向上させることができます。prepareCall()メソッドを呼び出した後、setメソッドを使用してストアドプロシジャのパラメータを設定し、execute()メソッドを呼び出してストアドプロシジャを実行します。ストアドプロシジャを実行した後、ResultSetオブジェクトを使用してストアドプロシジャの戻り値を取得できます。以下に、prepareCall()メソッドを使用してストアドプロシジャを実行する方法を示すサンプルコードを示します。
String storedProcedure = "{call my_stored_procedure(?, ?, ?)}";
CallableStatement statement = connection.prepareCall(storedProcedure);
statement.setString(1, "param1");
statement.setInt(2, 2);
statement.registerOutParameter(3, Types.INTEGER); // 注册输出参数
statement.execute();
int result = statement.getInt(3); // 获取输出参数的值
System.out.println("Result: " + result);
statement.close();
上記の例では、 my_stored_procedure という名前のストアドプロシージャがデータベースに存在し、3つのパラメータを必要とすることを想定しています。1つめのパラメータは文字列型で、2つめのパラメータは整数型です。3つめのパラメータは、出力パラメータです。まず、 prepareCall() メソッドを使用して、 CallableStatement オブジェクトを作成し、ストアドプロシージャの呼び出しステートメントを渡します。次に、 set メソッドを使用して、ストアドプロシージャの入力パラメータの値を設定します。この例では、1つめのパラメータは文字列型、2つめのパラメータは整数型です。次に、 registerOutParameter() メソッドを使用して、出力パラメータを登録します。最後に、 execute() メソッドを呼び出して、ストアドプロシージャを実行し、 getInt() メソッドを使用して、出力パラメータの値を取得します。なお、上記の例中、 connection オブジェクトは確立済みのデータベース接続で、 DriverManager を使用して取得できるものとします。また、パラメータの型と数は、実際の状況に応じて調整してください。