Ниже приведен фрагмент кода
Код: Выделить всё
CREATE OR REPLACE FUNCTION IS_EMPLOYEE_EXISTS(
EMP_ID IN EMPLOYEE.EMP_ID%TYPES
EMP_NAME IN EMPLOYEE.EMP_NAME%TYPES
EMP_CATEGORY IN EMPLOYEE.EMP_CATEGORY%TYPES)
RETURN BOOLEAN
-- performing some operations based on the inputs given
Я не могу вызвать это, поскольку драйверы Jdbc этого не делают поддержка логических типов pl/sql
мой подход к вызову этой функции следующий
Я хочу вызвать ее с именованными параметрами, а не с порядковым параметром
`
Код: Выделить всё
@Component
public MyClassDao extends AbstractDao(have the logic to get the DS){
final NamedParameterJdbcTemplete templete;
@Autowired
public MyClassDao(DataSource ds, NamedParameterJdbcTemplete templete){
super(dataSource);
this.templete = templete;
}
String queryString = "{ :"+ "RETURN_VALUE"+ " = call IS_EMPLOYEE_EXISTS ( :" + "EMP_ID" + ", :" +" EMP_NAME" + ", :" + "EMP_CATEGORY" +")}";
public Boolean callFunction(String empId,String empName, String empCat){
boolean result = false;
try ( CallableStatement stmt = getDataSource().getConnection().prepareCall(IS_EMPLOYEE_EXISTS)) {
stmt.registerOutParameter(RETURN_VALUE, Types.NUMERIC);
stmt.setString(EMP_ID, empId);
stmt.setString(EMP_NAME, empName);
stmt.setString(EMP_CATEGORY, empCat);
stmt.execute();
int returnValue = stmt.getInt(RETURN_VALUE);
result = (returnValue == 1); // Interpret as boolean (1 for true, 0 for false)
} catch (SQLException ex) {
ex.printStackTrace();
}
return result;
}
}
`
Подробнее здесь: https://stackoverflow.com/questions/783 ... pring-boot
Мобильная версия