powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вызов хранимой процедуры
5 сообщений из 5, страница 1 из 1
Вызов хранимой процедуры
    #33400201
Just Guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема такая: есть процедура в пакете (БД Оракл) и у неё выходные параметры - Table of Objects, Object, boolean,...
Надо считать как-то результат выполнения цедулины и переменные JAVA, только вот в какие?
процедура такая:
PROCEDURE get_form_info
(v_id in NUMBER, v_project_id IN NUMBER, v_user_id IN NUMBER,
v_show_filter OUT BOOLEAN, v_filter_list OUT filter_list_type,
v_def_filter_id OUT NUMBER, v_def_filter_name OUT VARCHAR2,
v_fsaves_list OUT filter_save_list_type,
v_ch_form_list OUT ch_form_list_type);

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CallableStatement cs=Conn.prepareCall("{call some_pckg.get_form_info(1,2,3,?,?,?,?,?,?)}");
cs.registerOutParameter( 1 ,Types. BOOLEAN );
cs.registerOutParameter( 2 ,Types.ARRAY);
cs.registerOutParameter( 3 ,Types.INTEGER);
cs.registerOutParameter( 4 ,Types.VARCHAR);
cs.registerOutParameter( 5 ,Types.ARRAY);
cs.registerOutParameter( 6 ,Types.ARRAY);
cs.execute();

Так?????

P.S. Только вот jvm ругается на Types.BOOLEAN, хотя при компиляции - всё нормально.
...
Рейтинг: 0 / 0
Вызов хранимой процедуры
    #33400335
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО не получается у Oracle JDBC работать с boolean, м.б. потому, что в Oracle тип boolean есть только в PL/SQL, но не в SQL. Единственно, согласно комментарию можно определить у процедуры NUMBER вместо BOOLEAN, а через getBoolean() получать значение, которое будет интерпретироваться как 0->FALSE, не-0->TRUE.
...
Рейтинг: 0 / 0
Вызов хранимой процедуры
    #33400439
Just Guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
За boolean спасибо, помогло. Только вот не могу вызвать процедуру, так как типы out параметров не совпадают(почему-то?), может out-параметр типа Table Of Objects объявлять не как Types.Array,а как-нить по-другому Types.Struct или мож Types.Other????????????
И если я даже выполню процедуру, то в (JAVA-)переменные каких типов я смогу считать out-параметры????
...
Рейтинг: 0 / 0
Вызов хранимой процедуры
    #33400568
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тынц (передача-прием массивов)
...
Рейтинг: 0 / 0
Вызов хранимой процедуры
    #33400616
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как определяется filter_list_type ? В документации на Oracle JDBC 9i сказано, что доступ к pl/sql-таблицам является расширением OCI-драйвера:

Oracle9i JDBC Developer's Guide and Reference Release 2 (9.2)
OCI Extensions
Accessing PL/SQL Index-by Tables
http://download-west.oracle.com/docs/cd/B10501_01/java.920/a96654/oci_func.htm#1017512

Но на JDBC от Oracle 10.2 у меня такое прокадывает и с THIN-драйвером, да и в документации этого ограничения я уже не нашел. Погляди пример в 9-й доке, или я могу показать, в классе OracleCallableStatement есть методы типа registerIndexTableOutParameter().

Но такое работает с одномерными массивами. Если же ты хочешь передавать двумерный массив, т.е. массив записей, то можно это сделать через объектные таблицы: http://www.sql.ru/faq/faq_topic.aspx?fid=407
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вызов хранимой процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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