Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
WithGod
78 / 78 / 2
Регистрация: 17.02.2010
Сообщений: 244
1

Выполнить процедуру Oracle на JDBC

22.05.2013, 07:41. Просмотров 1378. Ответов 3
Метки нет (Все метки)

Доброго времени суток! Я два дня не могу выполнить процедуру Оракл. Есть процедура
Oracle 11 SQL
1
2
3
4
5
INTERFACE.pga.getData(id            OUT settings.glob.number_array,
                            st  OUT settings.glob.number_array,
                            LENGTH        OUT NUMBER,
                            pvid        OUT settings.glob.number_array,
                            health_flag NUMBER DEFAULT NULL)
number_array - как я понял это массив
Oracle 11 SQL
1
  TYPE number_array IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
Пробовал по разному. По документации пробовал
Java
1
2
3
4
5
6
7
8
         CallableStatement  stmt = conn.prepareCall("begin interface.pga.getData(?,?,?,?,?); end");
            stmt.registerOutParameter(1, OracleTypes.ARRAY);
            stmt.registerOutParameter(2, OracleTypes.ARRAY);
            stmt.registerOutParameter(3, OracleTypes.INTEGER);
            stmt.registerOutParameter(4, OracleTypes.ARRAY);
            stmt.registerOutParameter(5, OracleTypes.ARRAY);
            
            stmt.execute();
Не выполняется. Не могу понять как это делается. Кто знает пожалуйста можете скинуть пример.

Добавлено через 1 минуту
Как получит OUT данные?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2013, 07:41
Ответы с готовыми решениями:

Ошибка в jdbc+oracle: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
Вот такой трабл: на Class.forName('oracle.jdbc.driver.OracleDriver'); ...

Oracle и JDBC
Доброго времени суток!!! Я раньше использовал БД Derby для своего приложения....

JDBC+Oracle 11g
Уже пару дней не дает мне покоя вопрос, что тут не так. С JDBC есть небольшой...

oracle.jdbc.* does not exist
Всем привет. Судьба-злодейка подкинула задачку для решения которой необходимо...

Проблема с Jdbc и Oracle и jsp
Доброго время дня У меня проблема немогу заставить TOMCAT конектится к Ораклу...

3
turbanoff
Эксперт Java
4019 / 3754 / 742
Регистрация: 18.05.2010
Сообщений: 9,329
Записей в блоге: 11
Завершенные тесты: 1
22.05.2013, 10:33 2
После вызова execute() вы можете получить значения out параметров так:
Java
1
2
3
Object id = stmt.getObject(1);
Object st = stmt.getObject(2);
int length = stmt.getInt(3);
Но что за конкретно объекты вернутся вернутся, надо смотреть.

PS. У вас не сходится кол-во out параметров - в процедуре 4, а вы регистрируете 5
1
WithGod
78 / 78 / 2
Регистрация: 17.02.2010
Сообщений: 244
22.05.2013, 11:33  [ТС] 3
Я дальше execute() не продвинулся. По всякому попробовал. Не понимаю как нужно сделать
0
WithGod
78 / 78 / 2
Регистрация: 17.02.2010
Сообщений: 244
30.05.2013, 08:01  [ТС] 4
Разобрался. Надеюсь кому то поможет
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public void premTest() throws SQLException {
        Connection conn = null;
        try {
            DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
            conn = DriverManager.getConnection(url, user, password);
            conn.setAutoCommit(false);
            OracleCallableStatement  stmt = (OracleCallableStatement)conn.prepareCall("begin interface.getData(?,?,?,?); end;");
            
            stmt.registerIndexTableOutParameter(1, 15, OracleTypes.NUMBER, 900);
            stmt.registerIndexTableOutParameter(2, 15, OracleTypes.NUMBER, 900);
            stmt.registerOutParameter(3, OracleTypes.NUMBER);
            stmt.registerIndexTableOutParameter(4, 15, OracleTypes.NUMBER, 900);
            
            stmt.execute();
 
            int leng = stmt.getInt(3);
            System.out.println(leng);
            Datum[] id = stmt.getOraclePlsqlIndexTable(1);
            Datum[] status = stmt.getOraclePlsqlIndexTable(2);
            Datum[] pvID = stmt.getOraclePlsqlIndexTable(4);
            
            for(int i = 0; i < leng; i++ ){
                System.out.println(id[i].intValue());
                System.out.println(status[i].intValue());
                System.out.println(pvID[i].intValue());
            }
        
            conn.rollback();
        } catch (Throwable e) {
            e.printStackTrace();
            conn.rollback();
            conn.close();
        }
    }
    
    public static void main(String[] args) throws SQLException {
        LoadPayment lp = new LoadPayment();
        lp.premTest();
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2013, 08:01

Подключение oracle через jdbc
Как подключиться к oracle через jdbc? Пишу в Intellij Idea, использую фреймворк...

Java+JDBC+ORACLE не возвращает запрос
Подключение к Oracle проходит нормально через этот код public Connection...

Ошbбка при подключение oracle с помощью jdbc
Добрый вечере. Пытаюсь подключить oracle с помощью jdbc, получаю такую ошибку:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru