Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вызов ХП Оракл / 10 сообщений из 10, страница 1 из 1
27.04.2007, 17:43:48
    #34493757
АФЫВАЫ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов ХП Оракл
Есть хранимые процедуры оракл.
Надо вызывать их динамически из джавы.
Т.е. формировать строку
'begin proc(p1=>?,p2=>?,...,pn>?)'
и выполнять ее как код, присваивая значения

цикл по и
set_param(1,value)
конец цикла

Джава версии 1.3.

Возможно ли это?

ЗЯ Я сам не джавист. Просто наши джависты уверяют, что невозможно.
...
Рейтинг: 0 / 0
27.04.2007, 18:00:18
    #34493802
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов ХП Оракл
АФЫВАЫ wrote:

> Есть хранимые процедуры оракл.
> Надо вызывать их динамически из джавы.
> Т.е. формировать строку
> 'begin proc(p1=>?,p2=>?,...,pn>?)'
> и выполнять ее как код, присваивая значения
>
> цикл по и
> set_param(1,value)
> конец цикла
>
> Джава версии 1.3.
>
> Возможно ли это?
>
> ЗЯ Я сам не джавист. Просто наши джависты уверяют, что невозможно.


Можно, думаю, А в чем именно загвоздка, пример нужен?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
27.04.2007, 18:27:16
    #34493869
АФЫВАЫ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов ХП Оракл
Если не затруднит.
...
Рейтинг: 0 / 0
27.04.2007, 19:00:49
    #34493946
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов ХП Оракл
Т.е. имеется строка с вызовом процедуры, надо в цикле подставить параметры и вызвать эту самую
процедуру? Вроде именно так всегда и делается, непонятно, в чем состоит загвоздка.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
27.04.2007, 19:44:19
    #34494015
АФЫВАЫ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов ХП Оракл
Для меня тоже не понятно в чем загвоздка.
Но наших джавистов смущает неопределенное число параметров и их порядок.
Они ссылаются что для вызова процедур используют какой-то класс, который вызывает заданную процедуру и параметры ей должны передаваться в том же порядке, как они описаны в оракл.
Я с джавой не работал, но уверен, что там должен быть какой-то механизм, который позволяет сформировать строку запроса наподобии 'begin proc(p1=>?,p2=>?,...,pn>?); end;', распарсить ее, передать параметры и выполнить.
...
Рейтинг: 0 / 0
27.04.2007, 19:57:32
    #34494035
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов ХП Оракл
АФЫВАЫ wrote:

> Для меня тоже не понятно в чем загвоздка.
> Но наших джавистов смущает неопределенное число параметров и их порядок.
> Они ссылаются что для вызова процедур используют какой-то класс, который
> вызывает заданную процедуру и параметры ей должны передаваться в том же
> порядке, как они описаны в оракл.

Может в этом классе не используется привязка параметров по имени со стороны plsql, т.е. строка
вызова выглядит как 'begin proc(?,?,?,...,?); end;'.

> Я с джавой не работал, но уверен, что там должен быть какой-то механизм,
> который позволяет сформировать строку запроса наподобиe 'begin
> proc(p1=>?,p2=>?,...,pn>?); end;', распарсить ее, передать параметры и
> выполнить.

В JDBC строка вызова может формироваться именно так, т.е:
Код: plaintext
1.
2.
3.
4.
5.
Connection con;
....
PreparedStatement pst = con.prepareStatement("begin proc(p1=>?, p2=>?); end;")
pst.setString( 1 , "First java parameter value");
pst.setString( 2 , "Second java parameter value");

причем привязка параметров со стороны Java идет по порядковым номерам знаков вопроса как указателей
на параметр. В последних версиях JDBC для Оракла появилась возможность привязывать java-параметры
прямо по именам параметров процедуры.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
27.04.2007, 20:54:11
    #34494074
АФЫВАЫ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов ХП Оракл
Спасибо.
Это то. что мне и нужно было.
Заодно и ответили в чем суть проблемы для наших джавистов - они грят, что в 1.3 не могут обращаться к параметру по имени. Никак не мог им втолковать, что можно обращаться и по номерам.
Ладно буду с ними общаться теперь.
...
Рейтинг: 0 / 0
28.04.2007, 13:39:20
    #34495394
Изя Шниперсон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов ХП Оракл
.................
CallableStatement cstmt = conn.prepereCall("? = myproc(?)")
cstmt.retisterOutParameter(1, Types.VARCHAR);
cstmt.setString(2, " param 2");
cstmt.executeUpdate();
String returnValue = cstmt.getString(1);
conn.close();
...............
...
Рейтинг: 0 / 0
28.04.2007, 13:53:26
    #34495461
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов ХП Оракл
АФЫВАЫСпасибо.
Это то. что мне и нужно было.
Заодно и ответили в чем суть проблемы для наших джавистов - они грят, что в 1.3 не могут обращаться к параметру по имени. Никак не мог им втолковать, что можно обращаться и по номерам.
Ладно буду с ними общаться теперь.

Я бы предложил следующее: скачать последние JDBC-драйвера для Oracle, там есть архив - classes12.jar или classes12_g.jar - предназначенный для использования с JDK 1.2 и 1.3. В них, кроме возможности вызова оракловых процерур с привязкой параметров по именам, дополнительно есть методы для привязки java-парамеров по имени. Например, если вместо интерфейса PreparedStatement использовать класс с его реализацией OraclePreparedStatement, то кроме методов setXXX() сможешь использовать методы setXXXAtName(). Примеры можно найти в Oracle10g JDBC Samples , раздел Named Parameters Sample . Может быть новые возможности драйверов позволят вам договориться:)
...
Рейтинг: 0 / 0
28.04.2007, 17:59:49
    #34496333
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов ХП Оракл
не совсем понятно, зачем спрашивать то, что описано в док. по Oracle JDBC, которую надо просмотреть всякому, кто работает с Oracle, даже если он уже знаком с JDBC. Там эти вопросы отвечены. Также зачем давать ответы, совпадающие с тем, что написано в этой документации. В составе документации Oracle есть отдельная книга по JDBC, и необходимо проситать комментарии к JDBC драйверу (хотя он ставится вместе с Oracle, но на сайте Oracle может оказаться более новая версия, причём драйвер для 10g годится также для 9i).
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вызов ХП Оракл / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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