В Oracle 11g у меня есть таблица survey
со свойствами id
, title
и message
. Хранимая процедура ниже получает одну запись на основе предоставленного идентификатора и сохраняет ее в предоставленном параметре OUT.
create or replace procedure get_survey(arg_id number, obj_survey out survey%rowtype) is
begin
select * into obj_survey from survey where id = arg_id;
end get_survey;
Мне нужно вызвать эту хранимую процедуру из Java, и я знаю, что могу начать с CallableStatement
, но как мне передать параметр OUT из Java, учитывая, что он должен иметь тип survey%rowtype
? Я знаю, что вместо этого могу использовать курсор, но думаю, что это не очень хорошая практика, поскольку я получаю только одну строку. Также мне нужно создать объект Survey (POJO) из параметра OUT и вернуть его из метода. Вот как далеко я сейчас попал в коде:
public Survey getSurvey(int id) throws SQLException {
CallableStatement stmt = conn.prepareCall("begin get_survey(?, ?); end;");
stmt.setInt(1, id);
stmt.registerOutParameter(2, OracleTypes.[okay what do i put here?]); // not sure about this line either
stmt.execute();
// get the out parameter, convert it to a Survey object type and return it
}