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

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

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

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

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


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


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


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

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

CURSOR(select somefield from sometable) на месте парметра sys_ref_cursor в вызове ХП пойдёт?
...
Рейтинг: 0 / 0
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
    #33998787
mserjo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
курсора на Оракле:
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
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
    #33998869
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Передача из Builder C++ с помощью Odac курсора в хранимую процедуру на Oracle
    #33998890
mserjo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Dmitrii K.

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

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

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

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

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

авторникак

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

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

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

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


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