powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Передача массива строк в PL/SQL процедуру
7 сообщений из 7, страница 1 из 1
Передача массива строк в PL/SQL процедуру
    #36931243
aleksandy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На сервере имеется такой тип.
Код: plaintext
create or replace type varchar2_array as table of varchar2( 4000 );
И такая процедура
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
  PROCEDURE string_params(
    p_id IN NUMBER
  , p_params IN VARCHAR2_ARRAY
  ) IS
    m_index INTEGER;
    m_msg VARCHAR2( 32000 );
  BEGIN
    IF p_params IS NULL OR p_params.COUNT =  0  THEN
      RETURN;
    END IF;

    m_index := p_params.FIRST;
    WHILE m_index <= p_params.LAST LOOP
      m_msg := m_msg || NVL(p_params(m_index), 'NULL') || '; ';
      m_index := p_params.NEXT(m_index);
    END LOOP;
    RAISE_APPLICATION_ERROR(- 20000 , m_msg);
  END add_extra_params;
Вызываю вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
     public   static   void  main(String[] args)  throws  Exception {
        OracleDataSource ods =  new  OracleDataSource();
        ods.setURL("jdbc:oracle:thin:@//xeoniis:1522/xe");
        ods.setUser("alekseenko");
        ods.setPassword("andy");
        Connection con = ods.getConnection();
        CallableStatement cs = con.prepareCall("{call string_params(?, ?)}");
        ArrayDescriptor ad = ArrayDescriptor.createDescriptor("VARCHAR2_ARRAY", con);
        cs.setObject( 1 ,  null );
        cs.setArray( 2 ,  new  oracle.sql.ARRAY(ad, con,  new  String[] {"1", "2", "3"}));
        cs.execute();
    }
В итоге получаю вот такой вывод
Код: plaintext
Exception in thread "main" java.sql.SQLException: ORA-20000: NULL; NULL; NULL;
Причем для
Код: plaintext
create or replace type number_array as table of number;
Аналогичный код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
     public   static   void  main(String[] args)  throws  Exception {
        OracleDataSource ods =  new  OracleDataSource();
        ods.setURL("jdbc:oracle:thin:@//xeoniis:1522/xe");
        ods.setUser("alekseenko");
        ods.setPassword("andy");
        Connection con = ods.getConnection();
        CallableStatement cs = con.prepareCall("{call number_params(?, ?)}");
        ArrayDescriptor ad = ArrayDescriptor.createDescriptor("VARCHAR2_ARRAY", con);
        cs.setObject( 1 ,  null );
        cs.setArray( 2 ,  new  oracle.sql.ARRAY(ad, con,  new  BigDecimal[] { new  BigDecimal("1"),  new  BigDecimal("2"),  new  BigDecimal("3")}));
        cs.execute();
    }
работает

Вот тут почитал, но ничего не помогло :(.
...
Рейтинг: 0 / 0
Передача массива строк в PL/SQL процедуру
    #36931403
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты код-то процедуры глянь:
aleksandy
Код: plaintext
1.
2.
3.
  PROCEDURE string_params(
...
    RAISE_APPLICATION_ERROR(- 20000 , m_msg);
...
Рейтинг: 0 / 0
Передача массива строк в PL/SQL процедуру
    #36931454
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis PopovТы код-то процедуры глянь:
aleksandy
Код: plaintext
1.
2.
3.
  PROCEDURE string_params(
...
    RAISE_APPLICATION_ERROR(- 20000 , m_msg);


Я понял, должно быть

Exception in thread "main" java.sql.SQLException: ORA-20000: 1; 2; 3;
...
Рейтинг: 0 / 0
Передача массива строк в PL/SQL процедуру
    #36931585
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 01.11.2010 15:42, 0FD wrote:

> Я понял, должно быть
>
> Exception in thread "main" java.sql.SQLException: ORA-20000: 1; 2; 3;

А какой именно драйвер используется, как имя файла?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Передача массива строк в PL/SQL процедуру
    #36931636
aleksandy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Denis PopovА какой именно драйвер используется, как имя файла?
ojdbc14.jar, который с OracleXE идет.
...
Рейтинг: 0 / 0
Передача массива строк в PL/SQL процедуру
    #36931700
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 01.11.2010 16:24, aleksandy wrote:

> ojdbc14.jar, который с OracleXE идет.

Если добавить orai18n.jar в CLASSPATH - не поможет?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Передача массива строк в PL/SQL процедуру
    #36932629
aleksandy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Denis PopovЕсли добавить orai18n.jar в CLASSPATH - не поможет?
Премного благодарен. Помогло. Всем спасибо
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Передача массива строк в PL/SQL процедуру
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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