|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
softwarerНу, кривой и противоречащий стандарту unique constraint - это тоже документированное поведение. Код: sql 1. 2. 3. 4. 5.
softwarerБага не перестаёт быть багой от того, что её записали в документацию. Не буду, пожалуй, опускаться вновь до перечисления противоречящих стандарту и документированных баг, которые можно найти в любой СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 20:19 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
pt12ptЧто здесь проктологического? Много всего: Наличие у хранимых процедур необъявленных входных и выходных параметров Наличие у хранимых процедур плохо контролируемых побочных эффектов Передача важнейшей информации через неструктурированную глобальную переменную, аналог фортрановских "общих областей" (это такое достижение технологии 1957-го года, убрано из языка как устаревшее и неадекватное кажется в 1977-м) Всё это приводит к тому, что мелкое безобидное изменение программного кода способно разрушить бизнес-логику "совсем в другом месте". О понятиях "модульность" и "инкапсуляция" можно забыть. pt12ptВ Оракле же мало того, что используется специальный язык, pt12ptну бог с ним вам необходимо объявить курсорную переменную, заполнить ее данными и вернуть В любом нормальном языке программирования процедура, желающая вернуть пользователю данные, должна иметь выходной параметр и должна вычислить его значение. Например, в Java, если Вы ходите посчитать количество элементов в списке, Вы пишете: Код: java 1. 2. 3.
по аналогии, когда Вы в PL/SQL хотите посчитать количество строк в таблице, Вы пишете Код: plsql 1. 2. 3. 4. 5. 6.
Конечно, можно пытаться назвать это проктологией, но тогда придётся чохом занести в это понятие практически все языки программирования, разработанные начиная с 60-х годов. По мне всё же "извращенцев" стоит искать среди желающих возвращать результаты работы каким-то другим способом. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 20:28 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
lockyа насчет "противоречащий стандарту" - главное чтобы не противоречило здравому смыслу и потребностям, остальное - от лукавого. Согласен. Собственно моё большое удивление по поводу unique в mssql вызвано именно его категорическим противоречием здравому смыслу. Стандарт же я здесь упомянул только для подчёркивания противопоставления "документированному поведению". Там, где стандарт противоречит здравому смыслу (например, в требовании различать null и пустую строку) я сам с большим удовольствием поддерживаю забивание на стандарт. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 20:32 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
softwarerКонечно, можно пытаться назвать это проктологией, но тогда придётся чохом занести в это понятие практически все языки программирования, разработанные начиная с 60-х годов. По мне всё же "извращенцев" стоит искать среди желающих возвращать результаты работы каким-то другим способом. нуну :) Ну не нравится вам возвращать рекордсеты - используйте OUT параметры, кто ж вам мешает то? как по мне, так лучше иметь 2 (или более) способа выполнить некую задачу, нежели с пеной у рта доказывать всем и каждому "есть только один исконно правильный способ, нужно использовать его! Ведь по другому то и не сделаешь!" ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 20:33 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
softwarerНаличие у хранимых процедур необъявленных ... выходных параметров Вот здесь можно прочитать о новой опции EXECUTE - WITH <result_sets_definition>. Приведу только пример: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 20:33 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 20:34 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
softwarerlockyа насчет "противоречащий стандарту" - главное чтобы не противоречило здравому смыслу и потребностям, остальное - от лукавого. Согласен. Собственно моё большое удивление по поводу unique в mssql вызвано именно его категорическим противоречием здравому смыслу. Стандарт же я здесь упомянул только для подчёркивания противопоставления "документированному поведению". Там, где стандарт противоречит здравому смыслу (например, в требовании различать null и пустую строку) я сам с большим удовольствием поддерживаю забивание на стандарт. А я вот вижу различие между NULL и пустой строкой, и поведение оракуля, который с какого-то бодуна их не различает - кажется мне весьма сомнительным. Как оракул еще NULL с нулём не путает - удивительно просто..... Но, тем не менее, UQ с множественными NULL значениями - в скуле таки есть, реализуемы. И, видимо, в оракуле аналогичным образом реализуемы UQ с единственным NULL значением. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 20:35 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
Что интересно, ораклоиды крайне редко приводят в качестве примеров того, что у них есть хорошего - действительно интересные и хорошие вещи До сих пор удивляюсь - почему так происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 20:37 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
Я могу в Oracle написать такую функцию (утрировано): Код: plsql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 20:46 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 20:46 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
pkarklinЯ могу в Oracle написать такую функцию (утрировано): Код: plsql 1. 2. 3. 4. 5. 6.
Да, но в DML вызывать нельзя, только procedure-like ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 20:48 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
lockyЧто интересно, ораклоиды крайне редко приводят в качестве примеров того, что у них есть хорошего - действительно интересные и хорошие вещи До сих пор удивляюсь - почему так происходит.Просто обычно специалист хорошо знает одну систему и не мыслит, что какая-то очевидная для него вещь отсутствует в другой базе данных. Ну, например, возьмите систему встроенных пакетов Oracle . Можно открывать по очереди и узнавать, и узнавать новое. И этого обычно нет в MSSQL. Но даже если не сравнивать набор этих возможностей, а просто глянуть на то, что у MSSQL имена хранимых процедур находятся в одном измерении, то можно привести в ужас бывалого разработчика pl/sql. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 20:56 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
lockyДа, но в DML вызывать нельзя, только procedure-like Т.е., грубо, в коде вызвать можно: Код: plsql 1.
Тогда здесь тот же самый side effect. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 20:57 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
Alexander RyndinlockyЧто интересно, ораклоиды крайне редко приводят в качестве примеров того, что у них есть хорошего - действительно интересные и хорошие вещи До сих пор удивляюсь - почему так происходит.Просто обычно специалист хорошо знает одну систему и не мыслит, что какая-то очевидная для него вещь отсутствует в другой базе данных. Ну, например, возьмите систему встроенных пакетов Oracle . Можно открывать по очереди и узнавать, и узнавать новое. И этого обычно нет в MSSQL. Но даже если не сравнивать набор этих возможностей, а просто глянуть на то, что у MSSQL имена хранимых процедур находятся в одном измерении, то можно привести в ужас бывалого разработчика pl/sql. Вай ме, вай дод.... Системные процедуры находятся в одной системной схеме... Да, это может вскипятить мозг Другое дело, если системные процедуры раскиданы по сотням системных пакетов - это да, удобно. Всегда приятно угадывать - где что лежит. Это лирика. А вот что касается "специалист знает одну систему" - ну дак может оные "специалисты" просто.... ээээ... слегка "зашорены"? Ну или просто не умеют пользоваться другими системами, откуда и возникает это вот "а у вас всё не по людски!А вот у нас...." зы обычно "узнают новое" из документации, а не копаясь в "системных пакетах". но это тоже - лирика. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 21:00 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
pkarklinlockyДа, но в DML вызывать нельзя, только procedure-like Т.е., грубо, в коде вызвать можно: Код: plsql 1.
Тогда здесь тот же самый side effect. Ну, тут сайд-эффекта то нету ты фактически вызвал процедуру, которую смеха ради оформил функцией. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 21:01 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
softwarerПередача важнейшей информации через неструктурированную глобальную переменную, аналог фортрановских "общих областей" (это такое достижение технологии 1957-го года, убрано из языка как устаревшее и неадекватное кажется в 1977-м) Для многих разработчиков, использующих не Oracle, выглядит странным, что запрос (и это может быть не только SELECT), возвращающий резалтсет клиенту, может быть отправлен, напрямую с клиента, но точно такой же запрос нельзя обернуть в "модуль" и получить результат "тем же образом". Так можно договорится до того, что в Pascal надо было не допускать использования writeln в процедурах и функциях, ибо непонятно, куда же информация передается из процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 21:01 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
lockyНу, тут сайд-эффекта то нету ты фактически вызвал процедуру, которую смеха ради оформил функцией. Т.е. сайд эффект, таки, не зависит от того, что написано внутри, а от "способа" вызова... ЗЫ. Слава Богу, что в MS SQL хп нельзя использовать в SELECTах, а в функциях CUD не к локальным табличным переменным. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 21:08 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
pkarklinlockyНу, тут сайд-эффекта то нету ты фактически вызвал процедуру, которую смеха ради оформил функцией. Т.е. сайд эффект, таки, не зависит от того, что написано внутри, а от "способа" вызова... ЗЫ. Слава Богу, что в MS SQL хп нельзя использовать в SELECTах, а в функциях CUD не к локальным табличным переменным. :) А может и не слава богу.... Мы то выкручивались, но сколько это крови требовало :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 21:09 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
lockyкак по мне, так лучше иметь 2 (или более) способа выполнить некую задачу, Способы различаются удобством, опасностью, полезностью в некоторых специфических ситуациях. Я в целом "за" способы, которые хоть в каких-то реальных ситуациях заметно лучше других. Что же касается конкретно этого... на решающую суперфичу он, деликатно говоря, ну никак не тянет. lockyнежели с пеной у рта доказывать всем и каждому "есть только один исконно правильный способ, нужно использовать его! Ведь по другому то и не сделаешь!" Тем не менее я рад, что многие выдающиеся учёные с пеной у рта доказали таки всем и каждому, что надо выкинуть из языков программирования такие способы выполнить задачу, как операторы ALTER PERFORM и ASSIGNABLE GOTO, альтернативные точки входа в функции, COMMON области, GOTO в тело другой подпрограммы и целый ряд прочих подобных фич. pkarklinВот здесь можно прочитать о новой опции EXECUTE - WITH <result_sets_definition>. Приведу только пример: Если я правильно понял, то это косметическое изменение, от которого я не ждал бы большого эффекта. В лучшем случае оно улучшит диагностику проблемных ситуаций "когда всё уже упало" - вместо невнятного падения ХП в случайном месте со случайной диагностикой будет падение с диагностикой "кривые входные резалтсеты". Но более важно то, что если ХП вызывается из двадцати мест, то это требует писать одно и то же в двадцати местах? lockyНо, тем не менее, UQ с множественными NULL значениями - в скуле таки есть, реализуемы. Безусловно. Напоминаю Вам, что я здесь не нападаю на MSSQL, а всего лишь дезавуирую аргумент "документировано - значит правильно", выдвинутый Павлом. Мог бы, конечно, дезавуировать на примере документированных оракловых нуллов - но по мне это было бы демагогией. pkarklinЯ могу в Oracle написать такую функцию (утрировано): Код: plsql 1. 2. 3. 4. 5. 6.
Если я правильно понял, что Вы хотите, то это пишется так: Код: plsql 1. 2. 3. 4. 5.
Я согласен с тем, что здесь есть глобальная переменная, что не очень хорошо. Но аналогии с common областями (если Вы имели её в виду) я здесь не вижу, поскольку эту возможность никто и никогда не использовал для межпроцедурного взаимодействия. Я на самом деле даже не знаю, можно ли её теоретически так использовать :) lockyЧто интересно, ораклоиды крайне редко приводят в качестве примеров того, что у них есть хорошего В свете специфики типичного "сравнения" это неудивительно. Меня удивляет как раз то, что мссклщики козыряют фигнёй вместо тех немногих вещей, которые у них действительно лучше (ну дисклеймер - немногих, которые я знаю. может, многих хороших не знаю). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 21:10 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
pkarklinДля многих разработчиков, использующих не Oracle, выглядит странным, что запрос (и это может быть не только SELECT), возвращающий резалтсет клиенту, может быть отправлен, напрямую с клиента, но точно такой же запрос нельзя обернуть в "модуль" и получить результат "тем же образом". Я не очень понимаю, зачем его во что-то оборачивать. pkarklinТак можно договорится до того, что в Pascal надо было не допускать использования writeln в процедурах и функциях, ибо непонятно, куда же информация передается из процедуры. Ну если человек перенаправит stdout и построит взаимодействие внутри приложения по принципу "одна процедура пишет writeln-ами, другая читал readln-ами", я пожалуй таки уверенно назову его нестандартно ориентированным. Что же до Pascal, то writeln из него надо было выкинуть ещё в середине девяностых, равно как и сейчас наблюдается ну просто волшебная корреляция между флагом "говнокод" и наличием в тексте всяких system.out.println. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 21:15 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
softwarerВ свете специфики типичного "сравнения" это неудивительно. Меня удивляет как раз то, что мссклщики козыряют фигнёй вместо тех немногих вещей, которые у них действительно лучше (ну дисклеймер - немногих, которые я знаю. может, многих хороших не знаю). Да нам это как-то и не надо, козырять то :) Как правило, стандартных ответов всего два: "зато мы работаем под линуксом" и "этого у нас нет, потому что это нам не нужно (да и нету у нас этого)" ну и плюс - и правда мало людей, которые бы сопоставимое время работали с оракулом и со скулём, так, чтобы сравнить - насколько более разным получается сопоставимый код, выполняющий одинаковую работу. зы - я вот как раз из них :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 21:16 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
lockyДа нам это как-то и не надо, козырять то :) К сожалению, практика не подтверждает истинность Ваших слов. Если очень не лень, сделайте поиск по форуму - несколько лет назад я делал глобальную выборку "холиварных" топиков форума на предмет "кто их начал: ораклоид/мссклщик/неизвестно". В итоге примерно 100% топиков были начаты мссклщиком с общим девизом "почему все кричат про крутоту оракла, когда у нас не хуже". lockyКак правило, стандартных ответов всего два: Правильно. Обратите внимание: ответов. А ответов на что? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 21:20 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
softwarerПравильно. Обратите внимание: ответов. А ответов на что? На любой аргумент. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 21:21 |
|
Чем MS SQL Server хуже Oracle Database?
|
|||
---|---|---|---|
#18+
ну и, разумеется, неповторимое "у нас это есть с 1993 года/с семёрки" ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2012, 21:22 |
|
|
start [/forum/topic.php?fid=35&msg=37716716&tid=1552540]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 144ms |
0 / 0 |