Доброго времени суток. При разработке ADF проектов, очень редко можно обойтись без вызова хранимых процедур и функций из базы. JDeveloper не имеет plug&play компонентов для работы с ними. Сегодня я хочу показать вам как это можно сделать.
1. Создайте в БД функцию складывающую два числа
2. Откройте Application Module Class у вашего Application Module1. Создайте в БД функцию складывающую два числа
CREATE OR REPLACE FUNCTION SUMMAB
(
A IN NUMBER
, B IN NUMBER
) RETURN NUMBER AS
BEGIN
RETURN A + B;
END SUMMAB;
Если у вас отсутствует этот класс, сгенерируйте его, как указано на картинках ниже
protected Object callStoredFunction(int sqlReturnType, String stmt,Object[] bindVars) {
CallableStatement st = null;
try {
st =
getDBTransaction().createCallableStatement("begin ? := " + stmt + ";end;",
0);
//
st.registerOutParameter(1, sqlReturnType);
if (bindVars != null) {
for (int z = 0; z < bindVars.length; z++) {
st.setObject(z + 2, bindVars[z]);
}
}
st.executeUpdate();
return st.getObject(1);
} catch (SQLException e) {
throw new JboException(e);
} finally {
if (st != null) {
try {
st.close();
} catch (SQLException e) {
}
}
}
}
public Number getSumm(Number a, Number b)
{
Number ret=null;
try {
ret = new Number(callStoredFunction(Types.NUMERIC, "SUMMAB(?,?)", new Object[] { a, b }));
} catch (SQLException e) {
System.out.println("sqlexception:"+e);
}
return ret;
}
callStoredFunction - метод для вызова хранимых процедур и функций.
Входящие параметры:
sqlReturnType - тип возвращаемых данных.
stmt - название процедурыbindVars - входящие данные процедуры
Код у него внутри достаточно простой. При помощи метода getDBTransaction().createCallableStatement() создается экземпляр CallableStatement .
Объект CallableStatement предоставляет унифицированный способ вызова хранимых процедур. Подробнее об этом объекте можно прочитать здесь .
getSumm - метод для вызова callStoredFunction, с указанными входящими параметрами.
4. Теперь, чтобы метод getSumm для клиентов, необходимо его опубликовать в Client Interface в Application Module
Готово. В Oracle ADF Model Tester можно проверить его работу
Комментариев нет:
Отправить комментарий