Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 4 5 6 7 8 [9] 10 11 12 13 .. 23   вперед  Ctrl
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Gluk (Kazan)
Кстати какая сейчас максимально допустимая глубина рекурсии ?


Как была 32, так и осталась. Хотя рекурсию в большинстве случаев можно заменить циклом. CTE (common table expression), появившиеся в 2005 не имеют таких ограничений: Рекурсивные запросы, использующие обобщенные табличные выражения
26 янв 07, 11:21    [3697862]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Gluk (Kazan)
pkarklin
На выходе будет столько наборов, сколько SELECTов (в никуда) будет в хп, причем они не обязаны иметь одинаковый перечень выборки.


Это то и пугает


Что именно Вас пугает?!
26 янв 07, 11:22    [3697870]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
DimaR
pkarklin
Ох, не хотел "сыпать соль на раны". ;) Меня лично не устраивает отсутствие в Oracle вернуть из хп набор данных.

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


Не вижу никаких проблем с реализацией этого же в MS SQL?! Но, на обсуждение с удовольствием посмотрел.
26 янв 07, 11:23    [3697887]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
kennethr
Ваша неправда. Все это напрямую вытекает из предварительной и раздельной компиляции хранимого PL\SQL кода. Близжайшая аналогия и исток этого - модули в АДА. Заголовок должен храниться отдельно от тела. Фундаментальная вещь.

Я рад, что Вы обладаете этими знаниями, но к сожалению не вижу смысла детально беседовать с человеком, который не думает над ранее сказанным и просто выдает стандартные слова из учебника.
26 янв 07, 11:26    [3697916]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
Как была 32, так и осталась. Хотя рекурсию в большинстве случаев можно заменить циклом.


Не всегда такая замена бывает очевидной и лаконичной
26 янв 07, 11:26    [3697918]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
Gluk (Kazan)
pkarklin
На выходе будет столько наборов, сколько SELECTов (в никуда) будет в хп, причем они не обязаны иметь одинаковый перечень выборки.


Это то и пугает


Что именно Вас пугает?!


Разнотипность запросов выводимых внавал одной хранимкой
26 янв 07, 11:27    [3697928]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
DimaR
Member

Откуда:
Сообщений: 1570
pkarklin
Я всего-навсего высказал свое отношение к подходу, используемому в Oracle. А на счет ссылки, можно попросить привести, м.б. я что-то пропустил? Заранее благодарен.

Подход ничем не сложнее чем в mssql, а намного гибче и лучше, есть куча разных способов
как вам один из них, mult_table это функция возвращающая набор
Параметры, количество
  A - столбцы
  B - строки

Результат таблица умножения

  select * from TABLE(mult_table(10,10));

AB	A1	A2	A3	A4	A5	A6	A7	A8	A9	A10
B1	1	2	3	4	5	6	7	8	9	10
B2	2	4	6	8	10	12	14	16	18	20
B3	3	6	9	12	15	18	21	24	27	30
B4	4	8	12	16	20	24	28	32	36	40
B5	5	10	15	20	25	30	35	40	45	50
B6	6	12	18	24	30	36	42	48	54	60
B7	7	14	21	28	35	42	49	56	63	70
B8	8	16	24	32	40	48	56	64	72	80
B9	9	18	27	36	45	54	63	72	81	90
B10	10	20	30	40	50	60	70	80	90	100
26 янв 07, 11:27    [3697929]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
DimaR
Подход ничем не сложнее чем в mssql, а намного гибче и лучше, есть куча разных способов
как вам один из них, mult_table это функция возвращающая набор


Меня интересует не результат, а реализация.
26 янв 07, 11:29    [3697946]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
Как была 32, так и осталась. Хотя рекурсию в большинстве случаев можно заменить циклом. CTE (common table expression), появившиеся в 2005 не имеют таких ограничений: Рекурсивные запросы, использующие обобщенные табличные выражения


IMHO немного неочевидно.
Кстати деревья с использованием фразы witch (как в DB2) в 2005 поддерживаются ?
26 янв 07, 11:30    [3697953]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
DimaR
Member

Откуда:
Сообщений: 1570
pkarklin
Меня интересует не результат, а реализация.

Самый простой вариант:
function GetFilialTable return filial_acc_table pipelined is
begin
  for c in (
            select f.code_filial, f.name_filial, t.type_access
              from zp.zp_filial_access t, zp.zp_filial f 
              where t.code_person=GetCodePerson
                and f.code_filial=t.code_filial
            union 
            select f.code_filial, f.name_filial, 'W' from zp.zp_person p, zp.zp_filial f 
             where p.code_person=zp.pkg_zp.GetCodePerson
               and f.code_filial=p.code_filial)
  loop
    pipe row(c);
  end loop;                     
end;

Вариант, что я привел выше, сложнее в реализации, щас найду
26 янв 07, 11:32    [3697982]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
У ref-курсоров есть намой взгляд серьезная проблема. Нельзя понять что внутри (по структуре) не профетчив его. А чтобы его фетчить, надо знать его структуру.
26 янв 07, 11:33    [3697984]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Gluk (Kazan)
У ref-курсоров есть намой взгляд серьезная проблема. Нельзя понять что внутри (по структуре) не профетчив его. А чтобы его фетчить, надо знать его структуру.


Я имел в виду обработку курсора PL/SQL-кодом разумеется
26 янв 07, 11:33    [3697991]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
DimaR
Member

Откуда:
Сообщений: 1570
https://www.sql.ru/forum/actualthread.aspx?tid=84306&hl=%e8%e7%e2%f0%e0%f9%e5%ed%e8%e5%ec#611108
26 янв 07, 11:35    [3698003]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
DimaR
pkarklin
Меня интересует не результат, а реализация.

Самый простой вариант:


Да, это интересная фича, позволяет не выбрасывать как раньше выборку в коллекцию одним чохом, а фетчить по мере необходимости (как и ref-курсоры).
26 янв 07, 11:35    [3698008]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
pkarklin
Я всего-навсего высказал свое отношение к подходу, используемому в Oracle. А на счет ссылки, можно попросить привести, м.б. я что-то пропустил?

Ээ.. отсюда и дальше.
26 янв 07, 11:36    [3698014]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Gluk (Kazan)
IMHO немного неочевидно.
Кстати деревья с использованием фразы witch (как в DB2) в 2005 поддерживаются ?


Да! В пример как раз раскрытие классического дерева подчиненности сотрудников.
26 янв 07, 11:36    [3698023]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
DimaR
Member

Откуда:
Сообщений: 1570
Gluk (Kazan)
Я имел в виду обработку курсора PL/SQL-кодом разумеется

В следующей версии обещают, возможность обрабатывать курсоры с помощю dbms_sql
26 янв 07, 11:38    [3698044]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
Gluk (Kazan)
IMHO немного неочевидно.
Кстати деревья с использованием фразы witch (как в DB2) в 2005 поддерживаются ?


Да! В пример как раз раскрытие классического дерева подчиненности сотрудников.


А в процедурном коде тоже надо использовать with ???
26 янв 07, 11:42    [3698066]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
kennethr
Member

Откуда:
Сообщений: 175
softwarer
который не думает над ранее сказанным

... Зря вы так ...
1. Повторюсь, Oracle разделил пакеты на тело и заголовок по очень конкретным причинам. И к "истории" это не имеет никакого отношения.
2. Подобное разделение определяет порядок коллективной разработки. Практически это выглядит так, что изменение тела пакета никак не влияет на чужие модули. С изменением заголовка все намного сложнее. Возможно для вас это "просто стандартные слова из учебника".
26 янв 07, 11:42    [3698068]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
DimaR
Самый простой вариант:


Хм... В MS SQL это было бы еще проще:

CREATE function GetFilialTable() 
returns TABLE AS RETURN
 (select f.code_filial, f.name_filial, t.type_access
 from zp.zp_filial_access t, zp.zp_filial f 
 where t.code_person=GetCodePerson
 and f.code_filial=t.code_filial
 union 
 select f.code_filial, f.name_filial, 'W' from zp.zp_person p, zp.zp_filial f 
 where p.code_person=zp.pkg_zp.GetCodePerson
 and f.code_filial=p.code_filial)
26 янв 07, 11:43    [3698075]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Gluk (Kazan)
А в процедурном коде тоже надо использовать with ???


Нет. Ибо MS SQL не имеет процедурного расширения а-ля PL\SQL.
26 янв 07, 11:44    [3698081]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
softwarer
pkarklin
Я всего-навсего высказал свое отношение к подходу, используемому в Oracle. А на счет ссылки, можно попросить привести, м.б. я что-то пропустил?

Ээ.. отсюда и дальше.


Спасибо. Ознакомлюсь...
26 янв 07, 11:44    [3698083]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
Gluk (Kazan)
У ref-курсоров есть намой взгляд серьезная проблема. Нельзя понять что внутри (по структуре) не профетчив его. А чтобы его фетчить, надо знать его структуру.

Проблема есть, но серьезной я ее не ощущаю. Внутри бизнес-логики естественно передавать типизированные структуры данных, в том числе типизированные курсоры. Вы же не страдаете от невозможности передать в хранимку "любой record", динамически разобрать его тип, посмотреть поля и поработать с ними? С курсорами то же самое, "проблемой" это является либо для "черезчур универсального" кода, либо для демонстрационных извращений типа той же таблицы умножения :)
26 янв 07, 11:45    [3698087]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
DimaR
Member

Откуда:
Сообщений: 1570
pkarklin
DimaR
Самый простой вариант:

Хм... В MS SQL это было бы еще проще:

Ну это примеры (и мой) в достаточной степени бессмысленные, можно и sql воспользоваться,
а что если нужно сначала провести сложную процедурную обработку данных, как это будет выглядеть у mssql?
26 янв 07, 11:46    [3698090]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL или Oracle  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
pkarklin
Gluk (Kazan)
А в процедурном коде тоже надо использовать with ???


Нет. Ибо MS SQL не имеет процедурного расширения а-ля PL\SQL.


Гмм всегда считал таковым TSQL. Разьве в нем нет операторов управления потоком исполнения ???
26 янв 07, 11:47    [3698095]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 4 5 6 7 8 [9] 10 11 12 13 .. 23   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить