Посоны меня поставили на место (не совсем так но!!!)

В общем коммитов в хранимых процедурах и функциях в нашем проекте быть не должно. Коммит выполнять командой

ADFUtils.getApplicationModuleForDataControl("AppModuleDataControl").getTransaction().commit();


Имеем хранимую процедуру:

CREATE OR REPLACE PACKAGE user_tasks is

  PROCEDURE update_user_password(
          username IN sec_users.login%TYPE,
          new_password IN sec_users.password%TYPE,
          o_err_msg OUT VARCHAR2);

end user_tasks;


CREATE OR REPLACE PACKAGE BODY user_tasks is

  PROCEDURE update_user_password(
          username IN sec_users.login%TYPE,
          new_password IN sec_users.password%TYPE,
          o_err_msg OUT VARCHAR2) is

  BEGIN

    update sec_users se set se.password = new_password where se.login = username;
    commit;


    EXCEPTION when OTHERS THEN
    o_err_msg := 'ERRORS';

  END;

END user_tasks;

Нужно ее вызвать из бина.

Обращаю внимание, что возвращаемое значение типа Boolean из Oracle получить нельзя.

UPD:

Вещи вроде {CALL user_tasks.update_user_password(?,?,?)}, выношу в отедьный файл с константами!

Собственно метод бина

import java.sql.CallableStatement;
import java.sql.SQLException;
import java.sql.Types;

***

private String update_user_password_in_database(String username, String new_password){

    CallableStatement st = null;
    String procedure_execute = "{CALL user_tasks.update_user_password(?,?,?)}";

        try {
        st = DBUtils.getDBTransaction().createCallableStatement(procedure_execute, 1);

        st.setString(1, username);
        st.setString(2, new_password);

        st.registerOutParameter(3, Types.VARCHAR);

        st.execute();

        String errMessage = null;
        errMessage = st.getString(3);

        if (StringUtils.isBlank(errMessage)){
             errMessage = "SUCCESS";
         }

        return errMessage;

    } catch (SQLException ex) {
        return "Exception 1" + ex.toString();
    } finally {
        try {
            if (st != null) {
                st.close();
            }
        } catch (Exception ex) {
            return "Exception 2" + ex.toString();
        }
    }
}   


package org.javadev.xxx.utils;

import oracle.jbo.server.ApplicationModuleImpl;
import oracle.jbo.server.DBTransaction;

public class DBUtils {

    private static final String APP_MODULE_DATA_CONTROL = "AppModuleDataControl";

    public static DBTransaction getDBTransaction(){
        ApplicationModuleImpl am = (ApplicationModuleImpl)ADFUtils.getApplicationModuleForDataControl(APP_MODULE_DATA_CONTROL);
        DBTransaction db = null;
        db = am.getDBTransaction();            
        return db;
    }

}