Попытка получить доступ к параметрам вывода хранимых процедур OS400 / DB2 из Java с помощью Spring JdbcTemplate

Попытка получить доступ к параметрам вывода хранимых процедур OS400 / DB2 из Java с помощью Spring JdbcTemplate. Последний параметр моей хранимой процедуры является параметром ввода / вывода, если запись обновляется, я верну "Y" из основного кадра. Может ли кто-нибудь рассказать мне, как получить доступ ко второму параметру и посмотреть, является ли он "Y"

XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("as400.xml"));
DataSource ds = (DataSource) beanFactory.getBean("dataSource");
jdbc = new JdbcTemplate(ds);
int res= jdbc.update("{CALL TESTONE(?,?)}", new Object[] { new String("JOHN"), new String("N") });

person SJS    schedule 16.03.2012    source источник


Ответы (1)


Чтобы вернуть значения из хранимой процедуры, вам нужно создать свой собственный класс, который расширяет StoredProcedure, объявить ваши параметры, а затем проверить параметры out, которые возвращаются из вызова execute:

public final class MyProc extends StoredProcedure {

    public MyProc() {
        super(myDataSource, "TESTONE");
        declareParameter(new SqlParameter("param1", Types.CHAR));
        declareParameter(new SqlOutParameter("param2", Types.CHAR));
    }

    public String execute(Map<?, ?> inParams) {
        Map results = super.execute(inParams);
        return (String) results.get("param2");
    }
}
person highlycaffeinated    schedule 16.03.2012
comment
так что я не могу использовать JdbcTemplate ?? а что если последний параграф - это ввод и вывод? - person SJS; 17.03.2012
comment
К сожалению нет. JdbcTemplate не поддерживает проверку значений параметров out. Для параметра ввода / вывода declareParameter(new SqlInOutParameter(...)) вместо - person highlycaffeinated; 17.03.2012
comment
линия. Карта ‹Строка, Объект› results = Cast.toMap (super.execute (inParams)); не работает :( - person SJS; 19.03.2012
comment
@john - Извините, я оставил там немного нашего собственного кода. Я обновил ответ. - person highlycaffeinated; 19.03.2012