powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Нарвался в Оракле. Может везде так...
21 сообщений из 71, страница 3 из 3
Нарвался в Оракле. Может везде так...
    #32952654
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
Не понимаю о чем вы спорите

То, что сделано в Оракле, правильно по определению
Если это не соответствует стандарту - тем хуже для стандарта
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32952770
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимо пробегал...
Код: plaintext
Если строка  str пуста, LENGTH возвращает NULL.
.... Мне это не нравиться.
Это никому не нравится :) Безусловно, по-своему логично, но претензии ораклоидов к реализации сводятся почти исключительно именно к этой детали; хочется, чтобы length('') == 0.

Мимо пробегал...Вы не находите что всё-таки есть разница между "результат неопределён" и "результат зависит от настроек"?
Я нахожу, что я сказал совершенно однозначную фразу: "невозможно предсказать результат выполнения скрипта [по тексту этого скрипта]". Мало того, SergSuper, уверенно предсказав результат, продемонстрировал именно ту опасность, которую я имел в виду.

Впрочем, изначально я не имел намерения говорить о недостатках MSSQL - исключительно ответ собеседнику, который "не читал, но осуждает".

Мимо пробегал...Что касается стандарта ANSI, точнее его внимательного прочтения. Я лично его не читал, не знаю читал ли его Leonid, сомневаюсь что Вы его читали,
Читал. И знаю, как он построен. Почему и отношусь к заявлениям "нарушает стандарт" очень, назовем так, скептически - ANSI SQL построен так, что его трудно нарушить. Если говорить о стандарте-2003 - в него ухитрились внести как SEQUENCE, так и IDENTITY, но не сделали при этом напрашивающегося, актуального и абсолютно естественного шага - IDENTITY, запитанного от SEQUENCE. Полагаю, понимаете, почему.

Мимо пробегал...но думаю в MS то кто-то его читал, не просто так же они назвали ANSI_NULLS
Думаю, читали. Мало того, если Вы обратите внимания - я нигде не говорил, что MSSQL нарушает стандарт. Но делать из этого (и только из этого) вывод, что любая другая реализация стандарт нарушает - значит, демонстрировать неграмотность и неумность.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32952793
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNoseкроме строковых, есть и другие типы. для каждого делать своё поведение на null?
Практической необходимости в этом я не вижу. Увижу - скажу, что хорошо бы сделать. Именно с блобами в Oracle связан не слишком удобный момент, проистекающий из реализации блобов - необходимость использовать функцию EMPTY_BLOB(). Это вызывает те же самые проблемы - скажем, проверка на пустоту блоба вообще говоря должна идти через coalesce (dbms_lob.length(blob), 0)=0 - но поскольку работа с блобами - не самая эффективная задача, таких проверок обычно избегают, не оставляя полям значения EMPTY_BLOB.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32952933
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я пишет:

> Александр, не флейма ради, а истины для: в нашей системе за подобные
> шалости сервера нас бы давно порвали на британский флаг. Это я к тому,
> что мир разнообразен и не сводится к глобусу Оракла.

Конечно не сводится. Я Оракл и не использую. И не уверен, что в
ближайшее время буду использовать даже для немаленьких баз. Меня ASA
больше устраивает по множеству параметров.
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32953500
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот кстати что ANSI стандарт говорит

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Values are either a null value or a non-null value.

         A null value is an implementation-dependent special value that
         is distinct from all non-null values of the associated data type.
         There is effectively only one null value and that value is a member
         of every SQL data type.  There is no <literal> for a null value 
         although the keyword NULL is used in some places to indicate that a
         null value is desired.
По-моему совершенно однозначно сказано.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32953946
Фотография Leonid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerПо поводу процитированного - я говорил о нежелании ставить галочки в каждом из 10.000 dbcontrol-ов. Кроме того, я говорил о том, что "решают" по-разному, и в результате де-факто ER-ки становится недостаточно, чтобы написать запрос - нужно еще смотреть, что именно решили в каждом конкретном случае.Выберите/напишите контролы, где не надо ставить галочки . Наследование то же ни кто не отменял.

softwarerО том, что MSSQL по каким-то странным причинам не поддерживает обычный binding параметров. Поэтому передаваемый с клиента SQL приходится либо оборачивать в вызов хранимки (кажется, sp_executesql - так, в частности, автоматом поступает ADO), либо нагружать сервер дополнительной работой по parsing-y.А чем вас пугает вызов "хранимки" sp_executesql? Ну да, не самая удачная реализация binding-а, но я не понимаю при чем здесь это? Тема другая и не валите все в кучу.

softwarerЭто никому не нравится :) Безусловно, по-своему логично, но претензии ораклоидов к реализации сводятся почти исключительно именно к этой детали; хочется, чтобы length('') == 0.Вот, блин, и приплыли. Одно тянет за собой другое. Стоит ли говорить после этого, что стандарты, не дураками писаны.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32954263
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperА вот кстати что ANSI стандарт говорит.
Браво. Кстати, Вы прочитали то место, где говорится, что <literal> - это вовсе не строковая константа?

Теперь два комментария. Комментарий первый: здесь сказано "нет" (то есть - "нет в стандарте"). С чем никто не спорит. Для того, чтобы наличие такого литерала противоречило стандарту, здесь пришлось бы увидеть "не должно быть литерала...". Почему? По той простой причине, что иначе любое расширение стандарта придется считать нарушением оного.

Теперь второй комментарий - о соответствии стандарту вообще. Позволю себе другую фразу из стандарта (SQL'92, сейчас нет под рукой новее)

Код: plaintext
Let set operation be UNION [ALL], EXCEPT [ALL], or INTERSECT [ALL].

Сколько из этих операций Вы найдете в MSSQL? Говорите, он соответствует стандарту?

Нет, соответствует, я с этим не собираюсь спорить. Соответствовать, как известно, можно по-разному. А вот противоречить - ... Вы сделали хорошую попытку, но обреченную на неудачу. Если бы все действительно было однозначно - как думаете, смог бы Оракл заявлять о соответствии стандарту? Полагаете, их спецы не просчитали все тонкости? А спецы того же мелкософта не протестировали их работу?
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32954281
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidВыберите/напишите контролы, где не надо ставить галочки .
Решение, безусловно, лучшее чем ничего, но недостаточное. Оно позволяет ставить меньше пяти тысяч галочек - безусловно. От ошибок, однако, оно не спасает.

Впрочем, если Вы скажете, что "нестандартное значение" нужно одной из ста или одной из тысячи галочек - я соглашусь, что вероятность ошибки сообразно падает. Правда, сообразно падает и ценность этой фичи, и критичность ее отсутствия.

Наследование то же ни кто не отменял.

LeonidА чем вас пугает вызов "хранимки" sp_executesql?
Вызов хранимки меня не пугает. Меня пугает идея "формировать sql из данных" - я не вижу пути понять это иначе, чем

Код: plaintext
sql = "select ... where parent_id = " + ParentId + " and record_type = " + RecordType + ...

Эта идея меня "пугает" - правда, это уже тема другой беседы.

Если хотите, считайте, что я придираюсь к словам.

LeonidВот, блин, и приплыли. Одно тянет за собой другое.
Есть такой эффект. В данном случае в Oracle именно что сказали А, но не решились сказать Б.

Из этого не следует, что не стоило говорить А. Даже без Б - с моей точки зрения - его стоило сказать. Но лучше было бы сказать и Б тоже; с этим я согласен.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32954377
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Браво. Кстати, Вы прочитали то место, где говорится, что <literal> - это вовсе не строковая константа?

Теперь два комментария. Комментарий первый: здесь сказано "нет" (то есть - "нет в стандарте"). С чем никто не спорит. Для того, чтобы наличие такого литерала противоречило стандарту, здесь пришлось бы увидеть "не должно быть литерала...". Почему? По той простой причине, что иначе любое расширение стандарта придется считать нарушением оного.

Если сказано что "нет" - значит не должно быть. Расширения допускаются там, где это никак не оговорено. И я бы перевёл как "не бывает литералов..."
А из определения литерала видно что строковая константа один из видов литералов.

Еще сказано что есть только одно only one null value, а в Оракле получается два - и пустая строка и null. Ну да, тоже расширения.

softwarerLet set operation be UNION [ALL], EXCEPT [ALL], or INTERSECT [ALL].

Сколько из этих операций Вы найдете в MSSQL? Говорите, он соответствует стандарту?

И где ж я такое говорил то? Единственно что я хотел сказать (а говорил еще меньше) - что превращение пустой строки в NULL это нелогично и неудобно. В MS SQL 4.2.1 тоже была такая фигня и мне это совершенно не нравилось. И чесно говоря удивляет чем же Вам это так нравится. А все эти стандарты мне по барабану.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32954683
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer LeonidА чем вас пугает вызов "хранимки" sp_executesql?
Вызов хранимки меня не пугает. Меня пугает идея "формировать sql из данных" - я не вижу пути понять это иначе, чем


А меня ПУГАЕТ, то что ADO имеет наглость лезть ВНУТРЬ запроса.
Неправильно выправлять кривизну сервера кривизной методов доступа
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32954756
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)А меня ПУГАЕТ, то что ADO имеет наглость лезть ВНУТРЬ запроса.
Не совсем так. По моим ощущениям, ADO - продукт примерно того же класса, что и BDE, со всеми теми же преимуществами-недостатками, но именно в данном случае большого криминала нет - ADO не лезет в запрос, а оборачивает его, вызывает хранимку, передавая ей текст запроса.

Правда, какую-то бяку с параметрами при этом я видел.

В качестве веселого оффтопика: когда я показал оракловый трейс с bind-переменными, мой оппонент заподозрил, что это трейс BDE. По его мнению, при передаче необернутого запроса параметры должны были быть подставлены на клиенте - в смысле, переменные заменены значениями прямо в тексте запроса.

Gluk (Kazan)Неправильно выправлять кривизну сервера кривизной методов доступа
Безусловно. Собственно, после того разговора мне стало много понятнее, почему с точки зрения MSSQL-евцев все надо делать на хранимках. В частности, иначе там идет принудительный cursor_sharing=force.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32954796
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, понял :)

У нас тут с ADO 1С-ник неделю назад трахался. Она кволочь пыталась сделать запрос обновляемым, заботливо вставляя в него ROWID, а 1С этой заботы не понимала Потом еще пришлось обернуть все типы в TO_CHAR, но это уже камушек в 1C :)
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32954904
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) softwarer LeonidА чем вас пугает вызов "хранимки" sp_executesql?
Вызов хранимки меня не пугает. Меня пугает идея "формировать sql из данных" - я не вижу пути понять это иначе, чем


А меня ПУГАЕТ, то что ADO имеет наглость лезть ВНУТРЬ запроса.
Неправильно выправлять кривизну сервера кривизной методов доступа

Собственно ADO(OLEDB) так и были задуманы, чтобы лезть в нутро запроса и делать массу других малополезных вещей(автоматически строить INSERT и UPDATE для начала). Правда корректная установка свойств и атрибутов соединения/команды позволяет извести эти чудачества начисто.
Всё семейство процедур sp_exec%,sp_prep%,sp_cursor% служит для выправления чудачеств безнадёжно устаревшего TDS 4.2, 7, 8, но это тема для отдельной дискуссии.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32954962
Фотография Leonid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerНе совсем так. По моим ощущениям, ADO - продукт примерно того же класса, что и BDE, со всеми теми же преимуществами-недостатками, но именно в данном случае большого криминала нет - ADO не лезет в запрос, а оборачивает его, вызывает хранимку, передавая ей текст запроса.Не отдавайтесь на волю ощущениям :) А то как в анекдоте: Так вы всю науку к @#$% сведете :)
ADO - это ActiveX обертка поверх OLE DB. OLE DB же сам по себе очень эфективный механизм.
BDE здесь ни при чем и классы и способы низкоуровневого доступа у них разные. Сравнивать их по меньшей мере не корректно.

softwarerЕсть такой эффект. В данном случае в Oracle именно что сказали А, но не решились сказать Б.
Из этого не следует, что не стоило говорить А. Даже без Б - с моей точки зрения - его стоило сказать. Но лучше было бы сказать и Б тоже; с этим я согласен.Ну не знаю, на мой взгляд, "А" того не стоило.
Ну да, в конце концов, вам с этим возиться, не мне.
Я же скорее соглашусь с SergSuper:
SergSuperпревращение пустой строки в NULL это нелогично и неудобно
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32955039
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidНе отдавайтесь на волю ощущениям :) А то как в анекдоте: Так вы всю науку к @#$% сведете :) ADO - это ActiveX обертка поверх OLE DB. OLE DB же сам по себе очень эфективный механизм.
Мне ближе точка зрения Alexey Sh - про "изведение чудачеств".

Leonid
BDE здесь ни при чем и классы и способы низкоуровневого доступа у них разные. Сравнивать их по меньшей мере не корректно.
Хм. Как бы Вам сказать.. смотреть можно с разных точек зрения.

ADO, как и BDE - это некий "толстый провайдер". То есть не просто интерфейс драйверов к БД, но также куча нетривиальной логики. Как и у BDE, как и у других продуктов подобного класса - у него есть как преимущества (возможность пользоваться этой логикой) так и недостатки - эта логика, а также вызванные ей ограничения реализации, проявляются и мешают в достаточно неожиданных местах.

LeonidНу да, в конце концов, вам с этим возиться, не мне.
Безусловно :) С тем моментом, что как раз "возиться" и оказывается ненужным.

Собственно, пример на эту тему только что был на RSDN - там человек спрашивал, пройдет ли в оракле запрос, составленный для DB2 и MS, и ему посоветовали заменить coalesce(...) на просто field is null. По моим текущим ощущениям, именно это - типичный случай.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32955175
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Собственно, пример на эту тему только что был на RSDN - там человек спрашивал, пройдет ли в оракле запрос, составленный для DB2 и MS, и ему посоветовали заменить coalesce(...) на просто field is null. По моим текущим ощущениям, именно это - типичный случай.
:)
А как было бы удобно если для int-а при присваивании нуля подставлялся бы NULL. Это ж coalesce(field ,0)=0 можно было бы заменить на просто field is null !
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32955206
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperА как было бы удобно если для int-а при присваивании нуля подставлялся бы NULL.
Это было бы очень удобно, если бы в полях ввода ноль и null отображались бы одинаково, а в логике обработки они практически всегда означали бы одно и то же.

SergSuperЭто ж coalesce(field ,0)=0 можно было бы заменить на просто field is null !
Можно было бы. "Как было бы удобно" определяется тем, насколько часто это нужно, а насколько часто - мешало бы.
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32955264
Dooma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторМожно было бы. "Как было бы удобно" определяется тем, насколько часто это нужно, а насколько часто - мешало бы.
Хочется повертеть пальцем у виска :)

Оставте в покое вы этих убогих ораклистов с их традициями. Не долго им осталось.
Не тронь Г пока не завоняет :)
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32955282
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, почему все провокаторы не регестряться на форуме ?
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32955487
налогично
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DoomaХочется повертеть пальцем у виска :)
У меня уже палец устал, читая про такие странности отдельно взятых и якобы крутых софтин ;-)
...
Рейтинг: 0 / 0
Нарвался в Оракле. Может везде так...
    #32955843
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, еще одно подтверждение
...
Рейтинг: 0 / 0
21 сообщений из 71, страница 3 из 3
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Нарвался в Оракле. Может везде так...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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