ストアドプロシージャの呼び出し
ストアドプロシージャの呼び出し
Oracle Service Cloud は、2つのクラスのストアドプロシージャをサポートしています。- パラメータ化されたストアドプロシージャ呼び出しを実行するには、CallableStatement オブジェクトを使用します。
- EXEC 構文を使用してSQL ステートメントとしてストアドプロシージャを実行するには、Statement オブジェクトを使用します。
CallableStatement オブジェクトの使用
CallableStatement クラスの一般的な実行メソッドを使用して、ストアドプロシージャをパラメータ化されたクエリとして実行できます。ストアドプロシージャの結果を返すには、getResultSet を呼び出します。更新された行の数を返すには、getUpdateCount を呼び出します。
次の例は、ResetPasswordForContact ストアドプロシージャを実行する方法を示しています。
CallableStatement cstmt = conn.prepareCall("ResetPasswordForContact"); cstmt.setString("Id", "7"); boolean ret = cstmt.execute(); if (!ret) { int count=cstmt.getUpdateCount(); if (count!=-1) { System.out.println("Affected rows: "+count); } } else { ResultSet rs=cstmt.getResultSet(); while(rs.next()){ for(int i=1;i<=rs.getMetaData().getColumnCount();i++) { System.out.println(rs.getMetaData().getColumnLabel(i) +"="+rs.getString(i)); } } }
Statement オブジェクトの使用
Statement クラスの実行メソッドを使用して、ストアドプロシージャをSQL ステートメントとして実行できます。ストアドプロシージャの結果を返すには、getResultSet を呼び出します。更新された行の数を返すには、getUpdateCount を呼び出します。
次の例は、ResetPasswordForContact ストアドプロシージャを実行する方法を示しています。(構文について、詳しくはEXECUTE ステートメント を参照してください。)
Statement stmt = conn.createStatement(); boolean ret = stmt.execute("EXEC ResetPasswordForContact Id = '7'"); if (!ret) { int count=stmt.getUpdateCount(); if (count!=-1) { System.out.println("Affected rows: "+count); } } else { ResultSet rs=stmt.getResultSet(); while(rs.next()) { for(int i=1;i<=rs.getMetaData().getColumnCount();i++) { System.out.println(rs.getMetaData().getColumnLabel(i) +"="+rs.getString(i)); } } }