Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle / 18 сообщений из 18, страница 1 из 1
18.09.2006, 14:05
    #33993996
mserjo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
Добрый день.

Подскажите пожалуйста, кто знает или сталкивался с такой ситуацией.

На Oracle есть хранимая процедура, у которой входной параметр курсор (ref cursor).
Как можно из Builder C++ с помощиь компонент Odac передать этот входной параметр?

Заранее спасибо.
...
Рейтинг: 0 / 0
18.09.2006, 15:17
    #33994299
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
Смотри демки ODAC'а: Cursor, MultiCursors, FetchCursor.
...
Рейтинг: 0 / 0
20.09.2006, 09:49
    #33998613
mserjo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
Dmitrii K.Смотри демки ODAC'а: Cursor, MultiCursors, FetchCursor.

Нет там в этих демках нужного мне.
...
Рейтинг: 0 / 0
20.09.2006, 10:01
    #33998648
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
mserjoНа Oracle есть хранимая процедура, у которой ВХОДНОЙ параметр курсор (ref cursor).


никак. ты хочешь странного
...
Рейтинг: 0 / 0
20.09.2006, 10:08
    #33998663
mserjo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
Gluk (Kazan) mserjoНа Oracle есть хранимая процедура, у которой ВХОДНОЙ параметр курсор (ref cursor).


никак. ты хочешь странного


"никак" - это про входной параметр курсор в хранимой процедуре???
или про передачу курсора из клиента в хранимую процедуру?
...
Рейтинг: 0 / 0
20.09.2006, 10:09
    #33998665
mserjo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
Gluk (Kazan)никак. ты хочешь странного

и интересно... что странного в этом желании? :)
...
Рейтинг: 0 / 0
20.09.2006, 10:26
    #33998712
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
Как формируется курсор на клиенте?
Как используется ХП?

CURSOR(select somefield from sometable) на месте парметра sys_ref_cursor в вызове ХП пойдёт?
...
Рейтинг: 0 / 0
20.09.2006, 10:42
    #33998787
mserjo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
курсора на Оракле:
type ref_cursor is ref cursor; (НЕ sys_ref_cursor)

Dmitrii K.Как формируется курсор на клиенте?

на клиенте курсор формируется как дата сет типа TOraDataSet.

Dmitrii K. Как используется ХП?

хп используется стандартно: заполняются параметры и вызывается процедура.

Dmitrii K.CURSOR(select somefield from sometable) на месте парметра sys_ref_cursor в вызове ХП пойдёт?

??????? CURSOR(select somefield from sometable) на месте парметра ????????
...
Рейтинг: 0 / 0
20.09.2006, 10:58
    #33998869
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
mserjoкурсора на Оракле:
type ref_cursor is ref cursor; (НЕ sys_ref_cursor)

Можно и так, sys_refcursor ввели, по-моему в девятке.
mserjo
Dmitrii K.Как формируется курсор на клиенте?

на клиенте курсор формируется как дата сет типа TOraDataSet.

Код в студию, может тогда что-нибудь придумаем )

mserjo
Dmitrii K.CURSOR(select somefield from sometable) на месте парметра sys_ref_cursor в вызове ХП пойдёт?

??????? CURSOR(select somefield from sometable) на месте парметра ????????
Так без проблем передаётся курсор в вызове функции (процедуру не пробовал), но делал не через OraStoredProc, а через кверю.
Типа такого:
Код: plaintext
1.
2.
select sid from v$session
where somefunction(CURSOR(select sid from v$session))> 10 

Посмотрите Oracle SQL Reference, раздел CURSOR Expressions:
оттуда
A CURSOR expression returns a nested cursor. This form of expression is equivalent
to the PL/SQL REF CURSOR and can be passed as a REF CURSOR argument to a
function.
...
...
Рейтинг: 0 / 0
20.09.2006, 11:02
    #33998890
mserjo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
To Dmitrii K.

На клиенте никакого sql-ного вшитого кода не должно использоваться.
...
Рейтинг: 0 / 0
20.09.2006, 11:16
    #33998948
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
mserjoTo Dmitrii K.

На клиенте никакого sql-ного вшитого кода не должно использоваться.
Инъекций боитесь, что-ли... или full server side logic... ну да ладно, ваше дело.
Как тогда формируется курсор?

И, если не секрет, задача-то какая? Может workaround какой-нибудь возможен...
Заодно попробуйте в дельфийской ветке спросить, может там кто-нибудь такое с ODAC'ом вытворял.
...
Рейтинг: 0 / 0
20.09.2006, 14:25
    #33999881
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
авторчто странного

ну скажи на милость КАК ты собираешься формировать СЕРВЕРНЫЙ курсор НА КЛИЕНТЕ. Нормальные люди передают рефкурсоры с сервера на клиент, а не наоборот
...
Рейтинг: 0 / 0
20.09.2006, 15:05
    #34000090
mserjo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
Gluk (Kazan)ну скажи на милость КАК ты собираешься формировать СЕРВЕРНЫЙ курсор НА КЛИЕНТЕ. Нормальные люди передают рефкурсоры с сервера на клиент, а не наоборот

говорю как: я себе вижу это примерно так: заполняется TOraDataSet (или TOraCursor) и передаётся как параметр в хранимую процедуру.
зачем это нужно: если выполняется, к примеру, однотипные манипуляции с таблицей, а связи между id полями нет никакой. К примеру, нужно изменить табельные номера сотрудников в таблицы t, по заданным в дбф-ном файле (более 1000 записей) кодам налоговой.
...
Рейтинг: 0 / 0
20.09.2006, 15:08
    #34000112
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
я и говорю

авторникак

к рефкурсору это имеет весьма отдаленное отношение. Ищите другое решение, рефкурсор должен формироваться в хранимом коде на сервере
...
Рейтинг: 0 / 0
20.09.2006, 15:17
    #34000157
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
...
Рейтинг: 0 / 0
20.09.2006, 15:21
    #34000178
mserjo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
Gluk (Kazan)я и говорю
к рефкурсору это имеет весьма отдаленное отношение. Ищите другое решение, рефкурсор должен формироваться в хранимом коде на сервере

спасибо за помощь...
если найду решение поставленой задачи способом, которым я говорил - выложу...
...
Рейтинг: 0 / 0
20.09.2006, 15:31
    #34000240
mserjo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
Dmitrii K.Где-то там народ решал через Array.

через Array не совсем то, что хотелось бы...
...
Рейтинг: 0 / 0
20.09.2006, 16:16
    #34000444
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
mserjo Dmitrii K.Где-то там народ решал через Array.

через Array не совсем то, что хотелось бы...
Понятно, что не совсем то...
Тоже стало интересно, но кроме как через CURSOR(select...) пока не вышло.
Пробовал открыть курсор на клиенте и передать его как параметр перед выполнением SP или вернуть из другой SP и опять же воткнуть в параметр. Передача парметра происходит нормально, а при фетче уже ora-01001.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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