powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / обращение к oracle процедуре
13 сообщений из 13, страница 1 из 1
обращение к oracle процедуре
    #38825675
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как я могу обратиться к oracle процедуру.
создал процедуру создаю соединение
пока эта процедура ничего не возврадает, он только делает изменения в БД.
Код: java
1.
2.
3.
4.
               String getres =    "{   call  ADDCARD( ? ) }";
stmt = con.prepareCall( getres );
stmt.setString(1, "23445534");
stmt.execute();



можно пример, делаю по этому примеру,
...
Рейтинг: 0 / 0
обращение к oracle процедуре
    #38825683
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему, собственно, вы решили, что процедура обязана хоть что-то возвращать?
...
Рейтинг: 0 / 0
обращение к oracle процедуре
    #38825774
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovА почему, собственно, вы решили, что процедура обязана хоть что-то возвращать?
я первый раз сделал процедуру и хочу его использовать,
как мне его использовать?
...
Рейтинг: 0 / 0
обращение к oracle процедуре
    #38825808
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хранимые процедуры пишут тогда, когда на сервер СУБД возлагается более-менее сложная обработка без вытаскивания данных на клиента.
Как сделать, чтобы процедура вернула набор данных - надо смотреть в документации на конкретный сервер.
"По-моему так".
...
Рейтинг: 0 / 0
обращение к oracle процедуре
    #38825824
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovХранимые процедуры пишут тогда, когда на сервер СУБД возлагается более-менее сложная обработка без вытаскивания данных на клиента.
Как сделать, чтобы процедура вернула набор данных - надо смотреть в документации на конкретный сервер.
"По-моему так".
хорошо у меня так и сделано, сейчас она просто принимает данные, а как его применять на java
...
Рейтинг: 0 / 0
обращение к oracle процедуре
    #38825877
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если процедура меняет данные так, как она должна их менять, то, с моей кочки зрения, всё работает.
Если вам требуется, чтобы процедура возвращала данные или чтобы из неё можно было делать выборку как из таблицы, то вам сначала в документацию вашей СУБД.
А ещё раньше - подумать над разумностью вашего хотения.
...
Рейтинг: 0 / 0
обращение к oracle процедуре
    #38826083
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдос, процедуры которые что-то возвращают обычно декларированы так:

Код: plsql
1.
2.
3.
procedure ADDCARD(argument IN OUT NUMBER) IS BEGIN
...
END;



Проверь этот факт (OUT-параметр).

Есть еще второй вариант. Функция. Возвращает number

Код: plsql
1.
2.
3.
CREATE FUNCTION ADDCARD_ANDRETURN
   (argument IN NUMBER) RETURN number
...



В обоих случаях JDBC код надо переписать с использованием registerOutParameter(...)
...
Рейтинг: 0 / 0
обращение к oracle процедуре
    #38826179
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕлдос, процедуры которые что-то возвращают обычно декларированы так:

procedure ADDCARD(argument IN OUT NUMBER) IS BEGIN
...
END;


не обычно, а частный случай.
обычным можно назвать возвращение набора данных.

мне больше нравится так ( java8 :) )
(вариант для набора записей)
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
try (
                Connection con = DriverManager.getConnection(база, логин, пароль);
                CallableStatement proc = con.prepareCall("{call имя(" + param + ")}");) {
            rs = proc.executeQuery();
           while( rs.next()){
                   ..........................
rs.get...("имя поля");
            };

        } catch (SQLException ex) {
            Logger.getLogger(xxxx.class.getName()).log(Level.SEVERE, null, ex);
        }


вариань для набора из одно строки записей
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
try (
                Connection con = DriverManager.getConnection(база, логин, пароль);
                CallableStatement proc = con.prepareCall("{call имя(" + param + ")}");) {
            rs = proc.executeQuery();
            rs.next())

           ыыы =    rs.get...("имя поля");
           

        } catch (SQLException ex) {
            Logger.getLogger(xxxx.class.getName()).log(Level.SEVERE, null, ex);
        }



если не надо ничего возвращать.

Код: java
1.
2.
3.
4.
5.
6.
7.
try (
              Connection con = DriverManager.getConnection(база, логин, пароль);
              CallableStatement proc = con.prepareCall("{call имя(" + param + ")}");) {
             proc.execute();
        } catch (SQLException ex) {
            Logger.getLogger(xxxx.class.getName()).log(Level.SEVERE, null, ex);
        }

...
Рейтинг: 0 / 0
обращение к oracle процедуре
    #38826188
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovХранимые процедуры пишут тогда, когда на сервер СУБД возлагается более-менее сложная обработка без вытаскивания данных на клиента.
Как сделать, чтобы процедура вернула набор данных - надо смотреть в документации на конкретный сервер.
"По-моему так".

я так не считаю. даже если простой запрос завернуть в хранимку - буде выполняться быстрее, т.к. он хранится в откомпилированном виде (по крайней мере в mssql), соответственно выполнится быстре.
заодно хранение запросов ( что недавно спрашивали)
...
Рейтинг: 0 / 0
обращение к oracle процедуре
    #38826205
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяя так не считаю. даже если простой запрос завернуть в хранимку - буде выполняться быстрее,
даёшь 2-х звенку!! ))))
...
Рейтинг: 0 / 0
обращение к oracle процедуре
    #38826212
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадяя так не считаю. даже если простой запрос завернуть в хранимку - буде выполняться быстрее,
даёшь 2-х звенку!! ))))
Зависит от архитектуры. Если сетка тормознутая (от планеты Земля до Луны)
а нужно сформировать аналитику то лучший кейс - колбасить все вычисления
на одном камне на серваке без сетевых событий вообще.

А потом тихо вернуть резалт.
...
Рейтинг: 0 / 0
обращение к oracle процедуре
    #38826215
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при возвращении множества наборов записей
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
try (
                Connection con = DriverManager.getConnection(база, логин, пароль);
                CallableStatement proc = con.prepareCall("{call page5_yyy04_01('" + param + "')}");) {
                proc.execute();
            rs = proc.getResultSet();
            rs.next();
//         обработка первого набора
               rs.proc.getMoreResults()  //переход к следующему набору
              rs.next();
//         обработка второго набора
           
....
        } catch (SQLException ex) {
            Logger.getLogger(xxx.class.getName()).log(Level.SEVERE, null, ex);
        }

...
Рейтинг: 0 / 0
обращение к oracle процедуре
    #38826228
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗависит от архитектуры. Если сетка тормознутая (от планеты Земля до Луны)
а нужно сформировать аналитику то лучший кейс - колбасить все вычисления
на одном камне на серваке без сетевых событий вообще.

А потом тихо вернуть резалт.

ну вообще более правильнее всегда возвращать только небольшой набор (уже отфильтрованный) - это и трафик спасает и нагрузку на сервер уменьшает. ибо для возвращения 20000 записей клиенту (и фильтровать на клиенте) нагрузка на сервер будет больше, чем при ~5 обращениях и возврате только нужных данных. с учетом того что возвращаютя строго ограниченное количество строк (max 50)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / обращение к oracle процедуре
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]