Как вызвать функцию, возвращающюю курсор
От: Taar Украина  
Дата: 29.12.03 10:40
Оценка:
Привет всем!

Есть оракловый пакет. В нем написано следующее

  type
    t_smetacursor is ref cursor;


procedure get_client_smeta(
    v_client     in plan_client.client%type,
    v_year       in plan_client.year%type,
    v_media      in plan_client.media_type%type,
    v_cursor in out t_smetacursor 
  )is
    begin
        open v_cursor for
    select .........
    end;


Как из с помощью JDBC вызвать эту функцию?
Пробовал использовать класс CallableStatement, но там при регистрации выходных параметров необходимо указывать тип результата. А как сказать чтобы оно возвращало ResultSet я не знаю.
Заранее благодарен за любую помощь
... << RSDN@Home 1.1.0 stable >>
Re: Как вызвать функцию, возвращающюю курсор
От: Blazkowicz Россия  
Дата: 29.12.03 11:45
Оценка: 6 (1)
Здравствуйте, Taar, Вы писали:

T>Как из с помощью JDBC вызвать эту функцию?

T>Пробовал использовать класс CallableStatement, но там при регистрации выходных параметров необходимо указывать тип результата. А как сказать чтобы оно возвращало ResultSet я не знаю.
T>Заранее благодарен за любую помощь

так
Автор: nant
Дата: 01.09.03
не пойдет?
Re[2]: Как вызвать функцию, возвращающюю курсор
От: Taar Украина  
Дата: 29.12.03 14:23
Оценка:
Здравствуйте, Blazkowicz, Вы писали:
B>так
Автор: nant
Дата: 01.09.03
не пойдет?


Спасибо за идею. Но к сожалению к моей задаче не подходит. Просто у меня вызывается не функция а процедура, у которой один из параметров является in out. И я не знаю как зарегестрировать последний выходной параметр, являющийся курсором.

Очень не хотелось бы переписывать уже работающее приложение, уже работающее приложение, которое использует данные функции.
... << RSDN@Home 1.1.0 stable >>
Re[3]: Как вызвать функцию, возвращающюю курсор
От: Blazkowicz Россия  
Дата: 29.12.03 15:02
Оценка:
Здравствуйте, Taar, Вы писали:

T>Здравствуйте, Blazkowicz, Вы писали:

B>>так
Автор: nant
Дата: 01.09.03
не пойдет?


T>Спасибо за идею. Но к сожалению к моей задаче не подходит. Просто у меня вызывается не функция а процедура, у которой один из параметров является in out. И я не знаю как зарегестрировать последний выходной параметр, являющийся курсором.


T>Очень не хотелось бы переписывать уже работающее приложение, уже работающее приложение, которое использует данные функции.



call.registerOutParameter (1, OracleTypes.CURSOR);


класс OracleTypes в драйвере должен быть.
Re[4]: Как вызвать функцию, возвращающюю курсор
От: Taar Украина  
Дата: 29.12.03 15:23
Оценка:
Здравствуйте, Blazkowicz, Вы писали:
B>
B>call.registerOutParameter (1, OracleTypes.CURSOR);
B>


B>класс OracleTypes в драйвере должен быть.


Большое спасибо!!!
... << RSDN@Home 1.1.0 stable >>
Re[5]: Как вызвать функцию, возвращающюю курсор
От: bugmaker  
Дата: 31.05.04 15:53
Оценка:
Здравствуйте, Taar, Вы писали:

T>Здравствуйте, Blazkowicz, Вы писали:

B>>
B>>call.registerOutParameter (1, OracleTypes.CURSOR);
B>>


B>>класс OracleTypes в драйвере должен быть.


T>Большое спасибо!!!


аналогичный вопрос, но только используется MS SQL Server 2000
как зарегистрировать в качестве выходного параметра курсор и затем получить его?
Re[6]: Как вызвать функцию, возвращающюю курсор
От: Blazkowicz Россия  
Дата: 01.06.04 07:38
Оценка:
Здравствуйте, bugmaker, Вы писали:

B>аналогичный вопрос, но только используется MS SQL Server 2000

B>как зарегистрировать в качестве выходного параметра курсор и затем получить его?

Возможно я ошибаюсь, так как MS SQL уже давно не трогал. Но по-моему там нельзя передавать — возвращать курсор в хранимую процедуру. Такое решается другим образом. Хранимая процедура может возвращать сразу DataSet, кажется. Спроси на форму по БД.
Re[7]: Как вызвать функцию, возвращающюю курсор
От: bugmaker  
Дата: 01.06.04 08:12
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, bugmaker, Вы писали:


B>>аналогичный вопрос, но только используется MS SQL Server 2000

B>>как зарегистрировать в качестве выходного параметра курсор и затем получить его?

B>Возможно я ошибаюсь, так как MS SQL уже давно не трогал. Но по-моему там нельзя передавать — возвращать курсор в хранимую процедуру. Такое решается другим образом. Хранимая процедура может возвращать сразу DataSet, кажется. Спроси на форму по БД.


передавать и возвращать можно
вопрос в том как это смделать из джавы через JDBC драйвер Microsoft для SQL Server
JDBC драйвер оракла позволяет вытворять такие вещи как описано выше в этом топике
а вот мсовский исходя из нарытой мной методом тыка информации такую возможность не поддерживает
в перечислении типов в доке к дпрайверу курсора нет, а при передаче в registerOutParameter например java.sql.Types.OTHER ругается что такой тип не поддерживается
Re[6]: Как вызвать функцию, возвращающюю курсор
От: alrad Беларусь  
Дата: 01.06.04 09:09
Оценка:
bugmaker wrote:
> Здравствуйте, Taar, Вы писали:
>
> T>Здравствуйте, Blazkowicz, Вы писали:
> B>>
> B>>call.registerOutParameter (1, OracleTypes.CURSOR);
> B>>

>
> B>>класс OracleTypes в драйвере должен быть.
>
> T>Большое спасибо!!!
>
> аналогичный вопрос, но только используется MS SQL Server 2000
> как зарегистрировать в качестве выходного параметра курсор и затем получить его?

Нет необходимости использовать курсоры для того чтобы вернуть ResultSet
из Microsoft SQL Server'а.
У меня как то стояла задача вернуть ризалтсэт из оракловой хранимой
процедуры, так вот я тогда повозился с курсорами. С майкрософт сиквелом
проще, там чтобы из хранимой процедуры вернуть ризалтсет надо просто
сделать SELECT ... перед выходом из процедуры.
Posted via RSDN NNTP Server 1.9 alpha
Re[7]: Как вызвать функцию, возвращающюю курсор
От: bugmaker  
Дата: 01.06.04 09:42
Оценка:
Здравствуйте, alrad, Вы писали:

A>bugmaker wrote:

>> Здравствуйте, Taar, Вы писали:
>>
>> T>Здравствуйте, Blazkowicz, Вы писали:
>> B>>
>> B>>call.registerOutParameter (1, OracleTypes.CURSOR);
>> B>>

>>
>> B>>класс OracleTypes в драйвере должен быть.
>>
>> T>Большое спасибо!!!
>>
>> аналогичный вопрос, но только используется MS SQL Server 2000
>> как зарегистрировать в качестве выходного параметра курсор и затем получить его?

A>Нет необходимости использовать курсоры для того чтобы вернуть ResultSet

A>из Microsoft SQL Server'а.
A>У меня как то стояла задача вернуть ризалтсэт из оракловой хранимой
A>процедуры, так вот я тогда повозился с курсорами. С майкрософт сиквелом
A>проще, там чтобы из хранимой процедуры вернуть ризалтсет надо просто
A>сделать SELECT ... перед выходом из процедуры.

знаю
но фишка в том чтобы джавовый код был совместим с ораклом, а оракл, насколько мне известно, в хранимых процедурах вот такой селект как раз и не поддерживает, а только выходные параметры типа курсор
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.