Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Вызов хранимой процедуры со смешанным ответом.


Автор: eandy 19.10.2009, 19:19
Приветствую.

Как получить все результаты отработки следующей sybase хранимки?

CREATE PROCEDURE dbo.doIsDayOpen
As
BEGIN
    SELECT 999 AS var1
    RETURN 777
END

---

return могу получить так

        String command = "{? = call dbo.doIsDayOpen()}";
        CallableStatement callableStatement = connection.prepareCall(command);
        callableStatement.registerOutParameter(1, Types.INTEGER);
...
            callableStatement.execute();

            callableStatement.getInt(1)  // возвращает return

... далее пытаюсь 
            ResultSet resultSet = callableStatment.getResultSet();
            if(resultSet.next()) {
                resultSet.getInt(0); //вроде как должен получить 999, но падает с эксепшеном
            }

Добавлено через 14 минут и 13 секунд
Ура... это волшебный форум smile)) Пока не написал сюда - часа 4 с бубном танцевал...

Вобщем, проблема в том, что ResultSet нужно получать раньше чем return. Иначе после получения return что-то где-то закрывается.

То есть:

        String command = "{? = call dbo.doIsDayOpen()}";
        CallableStatement callableStatement = connection.prepareCall(command);
        callableStatement.registerOutParameter(1, Types.INTEGER);
            callableStatement.execute();


... сначала
            ResultSet resultSet = callableStatment.getResultSet();
            if(resultSet.next()) {
                resultSet.getInt(0); //вроде как должен получить 999, но падает с эксепшеном
            }

... потом

            callableStatement.getInt(1)  // возвращает return

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)