Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Alex.CzechВ MS SQL одно из наиболее частых применений временных таблиц - сказать INSERT INTO #ttable EXEC <какая-то-совсем-чужая-процедура-которую-нагибать-под-себя-страшно-или-невозможно> Кстати, как такие проблемы решают в Оракл, я не совсем понимаю до сих пор. Юзать REF CURSOR ? Дык по нему потом пройтись придется с песнями и плясками курсором, чтобы заюзать в своем запросе в качестве элемента; или я неправ ? Один из вариантов решения, предложенного в ASA: Код: plaintext 1. Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:10 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Alex.CzechВ MS SQL одно из наиболее частых применений временных таблиц - сказать INSERT INTO #ttable EXEC <какая-то-совсем-чужая-процедура-которую-нагибать-под-себя-страшно-или-невозможно> Кстати, как такие проблемы решают в Оракл, я не совсем понимаю до сих пор. Юзать REF CURSOR ? Дык по нему потом пройтись придется с песнями и плясками курсором, чтобы заюзать в своем запросе в качестве элемента; или я неправ ? Ээ.. Заюзать-то можно как угодно. В том числе и через REF CURSOR, если сильно охота. Вопрос в том, что я не понимаю, когда именно случается это "наиболее частое применение". Если у администратора - для решения разовых задач, типа "получить данные - покрутить - покрутить - покрутить", то ораклоиды обычно пользуют Код: plaintext Использовать постоянную таблицу вместо временной, с одной стороны, несколько неэффективно - но с другой стороны, админу (которого в любой момент могут отвлечь на другую задачу) вряд ли хочется думать о времени жизни данных - предпочтет грохнуть таблицу по завершении работы. Ну а конфликта имен здесь не будет в силу такого понятия, как "схема". Если же имеется в виду постоянное применение, в "релизном программном коде" - надо пользоваться стандартными средствами, теми же GTT. Локальные средства здесь - прямой источник ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:10 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
ASCRUS Alex.CzechВ MS SQL одно из наиболее частых применений временных таблиц - сказать INSERT INTO #ttable EXEC <какая-то-совсем-чужая-процедура-которую-нагибать-под-себя-страшно-или-невозможно> Кстати, как такие проблемы решают в Оракл, я не совсем понимаю до сих пор. Юзать REF CURSOR ? Дык по нему потом пройтись придется с песнями и плясками курсором, чтобы заюзать в своем запросе в качестве элемента; или я неправ ? Один из вариантов решения, предложенного в ASA: Код: plaintext 1. ASCRUS, я сколько читаю то что вы пишете про Sybase ASA, столько вам завидую белой завистью... потрясающий набор возможностей, безо всякой иронии говорю. С удовольствием бы под него попрограммировал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:13 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
SergSuperНаверняка нечто подобное(последовательная обработка) приходится делать и на Оракле. Как это обычно делается? Где хранятся промежуточные результаты? Хм. Мой триггер остатков в этом не нуждался - впрочем, тут надо сравнивать структуры. Самое простое - запихнуть эти промежуточные результаты в nested table. Это тип данных, относящийся к "коллекциям" Оракла. Их удобство в том, что с ними можно работать как select-ами, так и обычным программным синтаксисом - доступ по индексу, изменение данных, удаление строки итп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:14 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
softwarer[quot Alex.Czech]Если же имеется в виду постоянное применение, в "релизном программном коде" - надо пользоваться стандартными средствами, теми же GTT. Локальные средства здесь - прямой источник ошибок. Именно это. GTT не очень нравятся тем что при широком использовании этой фичи их будет очень много и они будут засорять взор при просмотре объектов БД. Тем, что их надо переносить на промышленную БД при переносе ХП. Впрочем, так себе объяснения, я согласен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:15 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Oracle это тоже позволяет TABLE и PIPELINED. Кроме того всяческие игрища с bulk collect. Синтаксис конечно ужасный, но кто на это обращает внимание ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:16 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Alex.CzechИменно это. GTT не очень нравятся тем что при широком использовании этой фичи их будет очень много и они будут засорять взор при просмотре объектов БД. Тем, что их надо переносить на промышленную БД при переносе ХП. Впрочем, так себе объяснения, я согласен :) В Oracle GTT ОДНА на всех пользователей и на все сеансы, разделяются в ней данные. Так что ничего никому засорять не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:17 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
>> Так что ничего никому засорять не будет. Будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:20 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
SergSuper Во первых насколько я понял в Оракле нет возможности на AFTER TRIGGER получить весь набор измененных данных, а для позаписных триггеров времянки не нужны. Во вторых в Оракле помимо времянок существует еще куча различных структур данных (те же массивы), которые насколько я понял частенько бывают в нужных случаях эффективнее времянок. В третьих не забывайте, что у Оракла INSERT и UPDATE можно обьединить оператором MERGE (за название не ручаюсь), нарастающие спокойно реализуются аггрегатными запросами с использованием специальных OLAP и Windows функций, ну и т.д., т.п. В принципе у меня в ASA то же самое все и после перехода на нее с MSSQL мой код заметно ужался в 10-ки раз, использование времянок стало явлением нечастым (а с каждым ежемесячным паком и ростом уровня оптимизатора я что то помниться давно в коде времянок не обьявлял), по курсорам вообще придеться лезть в BOL и вспоминать как они там правильно обьявляются ... в общем понятно, что от того, что я получил более высокую функциональность, у меня сократилось время на написание кода и танцы с бубнами (этих тьфу тьфу вообще не наблюдается, пока на баги не наткнешься и то в основном танцуешь, чтобы обозначить баг и выслать его разработчикам). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:20 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Oracle это тоже позволяет TABLE и PIPELINED. Кроме того всяческие игрища с bulk collect. Синтаксис конечно ужасный, но кто на это обращает внимание ? Принципиально - позволяет. На практике а) Это уже процедуры, а не функции. Для тех кто скажет "who cares ?" я скажу, что не знаю до сих пор как из ADO получить результат выполнения PL/SQL-функции, не говоря уж о том что ADO не поддерживает параметры типа NESTED TABLE б) PIPELINED глючит, причем иногда ужасно... я лично имел пример PIPELINED-функции, которая при попытке использования в довольно извращенном виде (SELECT (SELECT * FROM t1 INNER JOIN fn(..) where t1.fid = t2.id) FROM t2) срубала коннекцию (ошибка TNS communication lost), после переписки того же на NESTED TABLE работает помедленнее, но зато ничего не срубает в) еще что-то было, пока писал первые 2 пункта, забыл третий :) При этом я хочу сказать, что не ставлю совершенно целью вывести утверждение "Оракл плохой". Оракл хороший, но кой-какие вещи и в нем делаются через жо, особенно когда надо поддержать кросс-плафторменность хотя бы в минимальном объеме (а нам тут надо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:22 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Пункт а следует читать "это уже НЕ процедуры, а функции" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:23 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Что есть в Вашем понимании кроссплатформенность ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:24 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Что есть в Вашем понимании кроссплатформенность ? Наше ПО работает и на MS SQL, и на Оракл. При этом 90% "системного" кода и 99% прикладного одинаковые ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:29 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Честно говоря, не ощущаю в Oracle ПРИНЦИПИАЛЬНОЙ разницы между процедурами и функциями. Функции удобнее тем, что при определенных условиях их можно использовать в select, у процедур свои мелкие преимущества. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:30 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
softwarerСамое простое - запихнуть эти промежуточные результаты в nested table . Это тип данных, относящийся к "коллекциям" Оракла. Их удобство в том, что с ними можно работать как select-ами, так и обычным программным синтаксисом - доступ по индексу, изменение данных, удаление строки итп. Ну та же временная (или и переменная таблица в MS SQL) таблица получается. Вообще получается, что говорить о временных таблицах в разрезе их определения, данного в начале - нехорошо. Надо бы говорить о них в разрезе применения. А по применению получается, что везде они есть в явном или неявном виде -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:31 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Честно говоря, не ощущаю в Oracle ПРИНЦИПИАЛЬНОЙ разницы между процедурами и функциями. Функции удобнее тем, что при определенных условиях их можно использовать в select, у процедур свои мелкие преимущества. Я так подозреваю, что вы с ним не через ADO работаете :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:31 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Alex.CzechASCRUS, я сколько читаю то что вы пишете про Sybase ASA, столько вам завидую белой завистью... потрясающий набор возможностей, безо всякой иронии говорю. С удовольствием бы под него попрограммировал :) Я не буду точно утверждать, но по моему все что я пишу про ASA давно присутствует в IBM DB2 :) Такое чувство, что из за теплой дружбы iAnywhere и IBM (а как же иначе - ведь iAnywhere главный разработчик ПО под мобильные решения, четко ориентированные под связку с IBM продуктами) последняя разрешила движение WatcomSQL в свою сторону. Хотя вот недавно опрос проводился менеджерами ASA - в какую сторону совместимости впервую очередь нужно двигаться - MSSQL, Oracle или IBM DB2, большинство пользователей высказалось за Oracle, мотивируя это тем, что частенько ASA используется именно в связке с консолидированными хранилищами данных на Оракле. Хотя лично я не представляю, как это можно достигнуть большой совместимости между блокировочником и версионником - все равно способы написания кода будут существенно различаться, да и обычно на верхнем уровне и нижнем не требуется аналогичная функциональность - у каждого уровня свои задачи и своя реализация этих задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:33 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
А что, ADO селект из функции забракует? И даже с Оракловым провайдером? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:33 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Alex.Czech Gluk (Kazan)Что есть в Вашем понимании кроссплатформенность ? Наше ПО работает и на MS SQL, и на Оракл. При этом 90% "системного" кода и 99% прикладного одинаковые А наше на Unix-е и Windows, но мы здесь не этим мереемся Не верю я в Ваше понимание кроссплатформенности, тут я полностью солидарен с Кайтом. Хотя мне глубоко импонирует как DB2 может работать с гетерогенными БД. Насколько я понимаю, она подстраивается под особенности реализации других СУБД. Во всяком случае так я понял, прошу адептов сильно не пиннать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:34 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
www.fun4me.narod.ruА что, ADO селект из функции забракует? И даже с Оракловым провайдером? Гм. В принципе не забракует. Но тут уже пострадает та самая кросс-платформенность. Нужно еще учитывать, что первой была версия под MS SQL :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:35 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
tygraВообще получается, что говорить о временных таблицах в разрезе их определения, данного в начале - нехорошо. Надо бы говорить о них в разрезе применения. А по применению получается, что везде они есть в явном или неявном виде Это вопрос реализации. В Oracle больше возможностей для выбора и следовательно маневра при разработке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:36 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Alex.Czech Gluk (Kazan)Что есть в Вашем понимании кроссплатформенность ? Наше ПО работает и на MS SQL, и на Оракл. При этом 90% "системного" кода и 99% прикладного одинаковые А наше на Unix-е и Windows, но мы здесь не этим мереемся Не верю я в Ваше понимание кроссплатформенности, тут я полностью солидарен с Кайтом. Хотя мне глубоко импонирует как DB2 может работать с гетерогенными БД. Насколько я понимаю, она подстраивается под особенности реализации других СУБД. Во всяком случае так я понял, прошу адептов сильно не пиннать. Это не мое понимание, это реальность данная нам в ощущениях. Если мы сегодня сделаем 2 проекта - один под MS SQL, другой под Оракл, оно наверняка заработает быстрее, но завтра мы все тут и подохнеми :) Хотя постепенно несомненно к этому дело идет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:37 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
авторГм. В принципе не забракует. Но тут уже пострадает та самая кросс-платформенность. Нужно еще учитывать, что первой была версия под MS SQL :) В принципе, преобразование вызова exec proc(...) в вызов select * from TABLE(proc(...)) - это достаточно простая операция. Можно автоматически сделать или IF поставить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:38 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Alex.Czech Это не мое понимание, это реальность данная нам в ощущениях. Если мы сегодня сделаем 2 проекта - один под MS SQL, другой под Оракл, оно наверняка заработает быстрее, но завтра мы все тут и подохнеми :) Хотя постепенно несомненно к этому дело идет Видите, Вы тоже согласны с Кайтом - должна быть прослойка инкапсулирующая платформенно-зависимые детали реализации :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:43 |
|
||
|
О временных таблицах замолвите слово...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Alex.Czech Это не мое понимание, это реальность данная нам в ощущениях. Если мы сегодня сделаем 2 проекта - один под MS SQL, другой под Оракл, оно наверняка заработает быстрее, но завтра мы все тут и подохнеми :) Хотя постепенно несомненно к этому дело идет Видите, Вы тоже согласны с Кайтом - должна быть прослойка инкапсулирующая платформенно-зависимые детали реализации :) Разумеется. Ну так он и есть, но писать его как раз мне сотоварищи :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:46 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=32842467&tid=1553899]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
81ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 382ms |

| 0 / 0 |
