|
Сложные вложенные запросы
|
|||
---|---|---|---|
#18+
Господа программеры! Вопрос на засыпку. Нужно написать хранимую процедуру (ХП), которая возвращает набор данных (видимо это курсор). Этот набор данных должен быть воспринят компонентами ODAC и ADO. Это еще не проблема. Дальше надо написать вторую ХП, которая должна брать набор данных из первой ХП, наложить на него дополнительные условия ( типа WHERE (A>B) AND (C>D) ) и вернуть второй набор данных. Дальше - каждая последующая ХП должна воспринимать набор данных из предыдущей ХП и на его основе формировать свой набор данных. Смысл этого в том, чтобы изменив первую ХП менялась работа всех последующих. Ответ с дублированием операторов SELECT в каждой ХП не рассматривается в качестве приемлемого. На сколько мне известно сделать SELECT FROM cursor нельзя. Выполнить динамически команду OPEN Cursor FOR SELECT ... тоже нельзя. А что делать? Принимаются любые ответы, даже отрицательные. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2001, 09:12 |
|
Сложные вложенные запросы
|
|||
---|---|---|---|
#18+
Попробуй использовать курсорную переменную. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2001, 09:43 |
|
Сложные вложенные запросы
|
|||
---|---|---|---|
#18+
В ADO есть два способа получить набор данных из Oracle. Если у тебя провайдер OraOLEDB - возвращай из ХП REF CURSOR. Если утебя провайдер MSDASQL - можешь вернуть только VARRAY или TABLE OF ... . А вот обратно запихать - тут проблема. Я поднимал этот вопрос на многих форумах. Касательно ADO + ORaOLEDB господа из команды Oracle OLE DB ответили мне, что это в принципе невозможно, и у Oracle нет планов делать это возможным. А вот касательно MSDASQL... Наверно можно создать SAFEARRAY и передать его в ХП, которая в качестве входного параметра берет VARRAY или TABLE OF... . ODAC все это должен делать со свистом. Но ODAC очень специфичен - он только под ORacle сделан, а ADO претендует на универсальность.Как если бы у меня был один движок, а дальше- хочешь Sybase или MS SQL Server или Oracle - нет проблем , просто меняй провайдера в вызовах. Ан не тут-то было. Андрей. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2001, 10:28 |
|
Сложные вложенные запросы
|
|||
---|---|---|---|
#18+
проблема не решаема вообще действительно можно получить курсор (если потом его корректно куцать), но запихать ... увы. Можно все же наверное передавать большую стринговую строку запроса и прибавлять к ней всяческое. Каждый дальнейший запрос будет все же выполняться быстрее, так как данные будут сидеть в кеше. Но все равно будет долго. А курсоры по динамическому SQL бывают, см. документацию, правда в некорой транскрипции они глючат. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2001, 14:35 |
|
|
start [/forum/topic.php?fid=52&fpage=2854&tid=1993590]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 124ms |
0 / 0 |