Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Нарвался, тут, случайно. Усе просто, как репа (пареная). Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Ну и далее Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Собственно второй INSERT вставил NULL вместо ''. Ну шо, бум знать. А в других базах как. Может, это стандартное поведение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 18:15 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
т.к. оракл появился задолго до стандартов то ... /topic/145574&pg=23#1263187 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 18:21 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Это типа багофича Оракула. В других СУБД не так. Смотри топик здесь: "MS SQL > Oracle = True?" там про это говорили. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 18:22 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
andrushokНарвался, тут, случайно. Усе просто, как репа (пареная). Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Ну и далее Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Собственно второй INSERT вставил NULL вместо ''. Ну шо, бум знать. А в других базах как. Может, это стандартное поведение? В mySQL наоборот третий запрос одна строка, четвертый ни одной только что проверил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 18:24 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Баян! Стандартная оракловая багфича... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 23:51 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
andrushokНарвался, тут, случайно. Усе просто, как репа (пареная). http://softwarer.ru/Oracle/oracle_facts.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 10:30 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Sybase ASE интерпретирует пустую строку как NULL. http://www.sybase.ru/forum/forum.pl?group=sybase.ru.dbms.ase&start=525&article=444 Тому кто это придумал, я бы гвоздь в голову забил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 11:09 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Sybase ASE интерпретирует пустую строку как NULL. наглое враньё. топик на который ссылку привел до конца дочитал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 14:55 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
пертаскивал программку и базу с db2 на oracle, тоже на эту хрень наткнулся (в db2 пустая строка это пустая строка). данные в db2 и oracle значит теперь разные. ну и ладно. это не моя проблема. если у кого что не сростется -- это все oracle виноват. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2005, 19:19 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
NewYearпертаскивал программку и базу с db2 на oracle, тоже на эту хрень наткнулся. Когда-то это стало для меня разочарованием года :)) И в работе действительно иногда мешает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 15:04 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Плохо это, что можно еще сказать. Пустая строка - это не NULL ни при каких обстоятельствах! Такое "разумное" поведение Oracle - не есть good :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 12:34 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Leonid пишет: > Плохо это, что можно еще сказать. > *Пустая строка - это не NULL ни при каких обстоятельствах!* > > Такое "разумное" поведение Oracle - не есть good :( То, что пустая строка <> пустая строка (т.к. NULL) - это однозначно бред. А вот по поводу соответствия пустой строки значению NULL - это тема великого множества флеймов. Вопрос на засыпку. Есть форма редактирования чего-нибудь. Там есть числовое и текстовое поля. Заполнены. Стираю число. Выделяю весь текст в текстовом поле и нажимаю Del. В числовое поле в БД сохраняется NULL. А что должно сохраниться в текстовое поле, NULL или ''? Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 12:44 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
[quot Александр Гoлдун]что должно сохраниться в текстовое поле, NULL или ''?/quot] А вот пусть форма и решает, что нужно. При чем здесь база ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 12:47 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Александр ГoлдунВопрос на засыпку. Есть форма редактирования чего-нибудь. Там есть числовое и текстовое поля. Заполнены. Стираю число. Выделяю весь текст в текстовом поле и нажимаю Del. В числовое поле в БД сохраняется NULL. А что должно сохраниться в текстовое поле, NULL или ''? Во-первых, с какого это перепугу в числовое поле идет NULL? Ввод был? Был. Величина NULL может появиться только в двух случаях - либо был insert и в списке полей это поле не указано, и у поля нет дефолтового значения, либо был insert или update и значение поля было явно указано как NULL. Вы указывали NULL явно самолично? Рядом с полем ввода стоял чекбокс "неопределенное значение"? Нет? Так отчего же в базе данных оказалось вранье? Да, именно вранье, поскольку сохранилось не то значение, которое указывалось при сохранении. Во - вторых, то же самое со строкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 15:34 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
note: ye z - это я. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 15:36 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
LeonidПлохо это, что можно еще сказать. Пустая строка - это не NULL ни при каких обстоятельствах! Такое "разумное" поведение Oracle - не есть good :( Сложно сказать. На самом деле, ввязавшись в проект на MSSQL, я тут же оценил удобство этого "разумного поведения". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 14:02 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
f2fА вот пусть форма и решает, что нужно. Надоедает решать это в каждой форме. Еще больше надоедает, когда в половине случаев решили так, в половине - этак, а в результате структуры данных (например, ER) становится недостаточно, чтобы написать работающий запрос. ну яВо-первых, с какого это перепугу в числовое поле идет NULL? Ввод был? Был. Величина NULL может появиться только в двух случаях Пожалуйста, опубликуйте имя гуру, чье мнение является столь категоричным аргументом. ну яДа, именно вранье, поскольку сохранилось не то значение, которое указывалось при сохранении. Действительно вранье, только Ваше. При сохранении указывалось именно значение null. Простой пример: если взять lookup combobox или любой другой пикер данных, нормальные люди предусматривают ту или иную возможность убрать значение из этого поля. Например, сажают рядом кнопку "очистить". Я предпочитаю обрабатывать клавишу "Del". Независимо от интерфейса это именно что команда очистить поле, без никаких. Если говорить об edit-ах, в них команда очистки данных - именно что удаление всех символов. Это стандартная метафора любого интефейса (вовсе не обязательно БД-), и если приложение трактует ситуацию так, что то пустое значение, которое было в edit-е изначало, резко отличается от пустого значения, появившегося после стирания содержимого - хм, пользователь будет просто в восторге. Оказывается, теперь посмотреть на экран станет недостаточным чтобы понять, какие же данные пойдут в базу - надо пристально следить за всем, что делал оператор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 14:14 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Ещё в аксессе так же, как и в оракле Только в отличие от оракла поведение можно себе на голову изменить : If you want Microsoft Access to store a zero-length string instead of a Null value when you leave a field blank, set both the AllowZeroLength and Required properties to Yes. ну и соответственно продолжение банкета : You can use the Format property to distinguish between the display of a Null value and a zero-length string. For example, the string "None" can be displayed when a zero-length string is entered. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 14:40 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
softwarerПожалуйста, опубликуйте имя гуру, чье мнение является столь категоричным аргументом. Честно - не помню уже. Помню, что в области sql к нему в основном прислушивались. softwarerДействительно вранье, только Ваше. При сохранении указывалось именно значение null. А я-то в чем наврал? Что пустая строка - это пустая строка? Господин softwarer, лично Вам: я наврал, пустая строка - это не пустая строка. Легче стало? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 16:11 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
softwarer LeonidПлохо это, что можно еще сказать. Пустая строка - это не NULL ни при каких обстоятельствах! Такое "разумное" поведение Oracle - не есть good :( Сложно сказать. На самом деле, ввязавшись в проект на MSSQL, я тут же оценил удобство этого "разумного поведения". И наоборот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 23:03 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
ye z пишет: > Во-первых, с какого это перепугу в числовое поле идет NULL? Ввод был? > Был. Величина NULL может появиться только в двух случаях - либо был > insert и в списке полей это поле не указано, и у поля нет дефолтового > значения, либо был insert или update и значение поля было явно указано > как NULL. Вы указывали NULL явно самолично? Конечно! Путем стирания числового значения. > Рядом с полем ввода стоял > чекбокс "неопределенное значение"? Нет? Так отчего же в базе данных > оказалось вранье? Да, именно вранье, поскольку сохранилось не то > значение, которое указывалось при сохранении. ну я пишет: > note: ye z - это я. Это диагноз... Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 23:15 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Alexey ShЕщё в аксессе так же, как и в оракле Только в отличие от оракла поведение можно себе на голову изменить : Это, пожалуй, хуже всего. Как правило даже неудачное, но постоянное решение решение лучше переключателя, из-за которого "вроде бы правильный" код в какой-то ситуации может стать ошибочным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 00:23 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
ну яА я-то в чем наврал? Что пустая строка - это пустая строка? Господин softwarer, лично Вам: я наврал, пустая строка - это не пустая строка. Легче стало? Смотря кому. Пользователю, благодаря Вам вынужденному помнить, что пустая строка в момент открытия формы и пустая строка после ввода-стирания - это две принципиально разных пустых строки, вряд ли станет намного легче. Может, конечно, появится чувство морального удовлетворения от того, что "это не бага, это фича". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 00:27 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
ОдинИ наоборот Неудивительно, в общем-то :) Но пока моя статистика такова: я нашел единственное место, где разделение null и пустой строки имеет смысл, и практически всю программу - где их надо обрабатывать совершенно одинаково. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 00:30 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Alexey ShЕщё в аксессе так же, как и в оракле Только в отличие от оракла поведение можно себе на голову изменить На самом деле не совсем так. В аксесе св-во AllowZeroLength влияет только на формочки для редактирования, но никак не на SQL-запросы. Т.е. "insert into tablename (fieldname) values ("")" не будет преобразованно в "insert into tablename(fieldname) values(null)" - независимо от значения св-ва AllowZeroLength ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 01:45 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Мне кажется на уровне сервера не должно быть никаких неявных преобразований никаких пустых строк в никакой NULL. В конце концов если я написал <WHERE Field = ''>, то значит именно это я и написал и не надо за меня выдумывать всякие NULL. Если мне сильно захочется контролировать, чтобы в стринговых полях не было пустых строк, никто мне не мешает сделать домен <VARCHAR() CHECK (Len(@) > 0)> и выбирать его в качестве типа для строк или же где нужно делать BEFORE TRIGGER, который пустые строки явно преобразовывает в NULL. авторЕщё в аксессе так же, как и в оракле Только в отличие от оракла поведение можно себе на голову изменить : If you want Microsoft Access to store a zero-length string instead of a Null value when you leave a field blank, set both the AllowZeroLength and Required properties to Yes. ну и соответственно продолжение банкета : You can use the Format property to distinguish between the display of a Null value and a zero-length string. For example, the string "None" can be displayed when a zero-length string is entered. Нуу, так как PowerBuilder дедушка Access, то естественно в нем то же самое. И я считаю это правильным - программист клиентской части на каждое поле вправе выставить флаги "IsEmptyToNull" (если пустое, то в NULL) и "Required" (обязательно к заполнению), таким образом вводя дополнительную проверку на ввод данных к контролю БД. Ну а для тех инструментов построения клиентских приложений, у которых такой возможности контроля преобразования пустых значений нет ... считаю это их личными проблемами, ни коим образом не влияющими на работу СУБД и уж тем более механизм интрепретации пустых строк и NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 07:05 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
softwarerПользователю, благодаря Вам вынужденному помнить Попрошу не примазывать меня к программистам СУБД Оракл и программ сделанных на его основе. Смею заверить, что это вовсе не благодаря мне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 12:12 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун ye z пишет: > Во-первых, с какого это перепугу в числовое поле идет NULL? Ввод был? > Был. Величина NULL может появиться только в двух случаях - либо был > insert и в списке полей это поле не указано, и у поля нет дефолтового > значения, либо был insert или update и значение поля было явно указано > как NULL. Вы указывали NULL явно самолично? Конечно! Путем стирания числового значения. Тема об эквивалентности пустой строки и NULL а также пустой строки в поле ввода числа / валюта / дата - флеймовая. И давайте впредь не распространять внутренние соглашения одной отдельно взятой системы, к которой Вы привыкли, на все остальные какие только есть. Если у Вас принята такая эквивалентность, то так и пишите - у нас это (я не буду возражать если укажете где именно) так-то и так-то, все пользователи предупреждены и все такое, мы решаем вопросы согласования данных / экспорта / импорта так-то и так-то. Мы с интересом это прочтем. Александр Гoлдун ну я пишет: > note: ye z - это я. Это диагноз... Не перегибайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 12:35 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
ну я softwarerПользователю, благодаря Вам вынужденному помнить Попрошу не примазывать меня к программистам СУБД Оракл Я Вас как раз отмазываю от этого благородного сословия. Именно Вы говорите, что стартовый null в поле, и пустая строка, появляющаяся после ввел-очистил - это две разных пустых строки. Ораклоиды так не делают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 12:42 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
ASCRUSЕсли мне сильно захочется контролировать, чтобы в стринговых полях не было пустых строк, никто мне не мешает сделать домен И я считаю это правильным - программист клиентской части на каждое поле вправе выставить флаги "IsEmptyToNull" (если пустое, то в NULL) и "Required" Само по себе - правильно. Но давайте представим приложение, допустим, тысяча форм, из них штук шестьсот - ввод данных. В каждой форме десять-двадцать полей. Итого - из десяти тысяч потенциальных "вправе" программист клиентской части несколько раз забыл, ошибся.. Повторюсь: как только я столкнулся с прямой необходимостью это предусматривать - я стал больше ценить оракловое решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 13:30 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
softwarerИменно Вы говорите, что стартовый null в поле, и пустая строка, появляющаяся после ввел-очистил - это две разных пустых строки. Ну как же Вас тянет приписать мне чего-нибудь, я даже с интересом наблюдаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 13:33 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
ну яНу как же Вас тянет приписать мне чего-нибудь, я даже с интересом наблюдаю. Вы лучше с интересом почитайте во-первых, свои предыдущие сообщения, а во-вторых, те сообщения, на которые Вы отвечали. Авось, найдете что-нибудь занимательное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 13:39 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
softwarer ASCRUSЕсли мне сильно захочется контролировать, чтобы в стринговых полях не было пустых строк, никто мне не мешает сделать домен И я считаю это правильным - программист клиентской части на каждое поле вправе выставить флаги "IsEmptyToNull" (если пустое, то в NULL) и "Required" Само по себе - правильно. Но давайте представим приложение, допустим, тысяча форм, из них штук шестьсот - ввод данных. В каждой форме десять-двадцать полей. Итого - из десяти тысяч потенциальных "вправе" программист клиентской части несколько раз забыл, ошибся.. Повторюсь: как только я столкнулся с прямой необходимостью это предусматривать - я стал больше ценить оракловое решение. По мне уж лучше CHECK для поля или домена. В принципе конечно может у меня привычка сложилась не доверять программистам клиентских приложений (в том числе и себе), но на БД у меня всегда поднят полный контроль на все мыслимые чихи не только пользователей, но и программистов/админов. С одной стороны это мне гарантирует целостность данных вне зависимости от того, кто, когда и как пытался их внести. С другой стороны такой контроль неплохо себя зарекомендовал как бесплатный автотестер кодерской части, который частенько тыкает программеров клиентской части носом в различные несоотвествия того, что есть и что/как они пытаются получить/изменить. Единственное критическое место с полным отсутствием такого "тотального" контроля (да и фактически вообще какого либо) - это таблицы, которые заполняются (юзаются) расчетными алгоритмами БД (те же архивы), на которые только стоят хитрые триггера "AFTER FOR EACH STATEMENT", запрещающие их любое изменение для любого процесса, кроме самих расчетов в БД, что опять же сделано для полного перекрытия кислорода любителям поправлять ручками расчитанные цифры. Все остальное, в том числе и FOREIGN KEY с этих таблиц снято с целью обеспечения максимальной производительности расчетов. Естественно не для каждой СУБД можно легко, просто и без потери производительности опускаться до такого "параноидального" проектирования БД, но с другой стороны если мне СУБД позволяет, то я не пожалею времени подстраховаться от человеческих ошибок :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 13:45 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
ASCRUSПо мне уж лучше CHECK для поля или домена. По мне лучше и то, и другое. К сожалению, валить все проверки на сервер крайне неудобно - по ряду причин, скажем, сервер обычно выдает только первую ошибку, в то время как желательно показать все сразу. Полностью автоматизировать перенос ограничений с сервера на клиент не получится - есть достаточно сложные моменты, которые формальными constraint-ами не сформулируешь. Делать все ограничения в базе - оставлять ее беззащитной перед неаккуратной работой саппорта. Так что лучше объединить. ASCRUSно на БД у меня всегда поднят полный контроль на все мыслимые чихи не только пользователей, но и программистов/админов. Полностью согласен и поступаю так же. И это в том числе снизит стоимость ошибки программиста клиентской части. Но подход, при котором у него практически нет шансов ошибиться, меня все равно устраивает больше. "Практически нет" - в данном случае, статистика по работе меня и коллег. Для примера - для дельфи ошибку приведения AnsiString к PChar (вызывающую access violation) я видел минимум на порядок чаще, чем ошибку с null-пустой строкой. Хотя я и первую видел не то чтобы часто :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 13:58 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
softwarerПовторюсь: как только я столкнулся с прямой необходимостью это предусматривать - я стал больше ценить оракловое решение. Какой бред! Научитесь отделять мух от котлет. Возьмите нормальные контролы в нормальной клиентской среде или допишите имеющиеся, если умеете конечно, и будет вам счастье с любым сервером. Данное же поведение Oracle не вписывается в стандарт ANSI SQL. Поэтому вы можете называть это сколь угодно замечательной фичей, но на самом деле это не очень хорошо , т.к. вносит путаницу на уровне сервера, а не на уровне ваших клиентских "фейсов": Код: plaintext 1. Это отклонение от ANSI SQL, так же как отсутствие JOIN в более ранних версиях Oracle, осложняеет переносимость кода с других серверов и создание приложений работающих с разными серверами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 16:01 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
LeonidКакой бред! Научитесь отделять мух от котлет. Возьмите нормальные контролы в нормальной клиентской среде или допишите имеющиеся, если умеете конечно, и будет вам счастье с любым сервером. Последуйте собственному примеру - отделите мух от котлет. Или расскажите мне, как нормальные контролы в нормальной клиентской среде позволят мне писать работающие запросы. Заодно - ознакомьтесь с упоминанием недостатка, который я вижу в "нормальных клиентских контролах". LeonidДанное же поведение Oracle не вписывается в стандарт ANSI SQL. Я абсолютно уверен в том, что Вы внимательно прочитали стандарт ANSI SQL, хорошо обдумали утверждение и говорите со знанием дела. Или же Вы опираетесь на опыт MSSQL, где невозможно предсказать результат выполнения следующего простейшего скрипта: Код: plaintext 1. LeonidПоэтому вы можете называть это сколь угодно замечательной фичей, но на самом деле это не очень хорошо , т.к. вносит путаницу Я с громадным интересом выслушаю Ваше описание практического опыта разгребания этой путаницы. До той поры останусь при своем опыте - не видел, чтобы кто-либо ощущал от этого заметное неудобство. Leonidдля Oracle полностью идентичны и вставят в таблицу значения NULL, а не NULL и пустую строку. На самом деле это зависит от типа колонки, но не суть. Да, это так. Утверждение "создает путаницу" при этом сродни утверждению авторов венгерской нотации - мол, ее неиспользование также создает путаницу с переменными. LeonidЭто отклонение от ANSI SQL, так же как отсутствие JOIN в более ранних версиях Oracle, осложняеет переносимость кода с других серверов и создание приложений работающих с разными серверами. Наполовину согласен. Наполовину - потому что приложения, работающие с разными серверами, создаются вовсе не написанием кода, компилируемого любым из серверов (если, конечно, цель - создать работающее, а не демонстрационное, приложение). Итак: да, осложняет перенос. Зато облегчает разработку. Имхо, если поднять статистику - обнаружится, что разработок существенно больше, чем переносов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 16:29 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
2 softwarer Допустим есть таблица с неким символьным полем fld. И есть некий параметр. Вам надо выбрать все значения равные этому параметру. Если параметр не задан (т.е. null) - ничего выбирать не нужно. Получается что в Оракле в этом случае выберуться записи с пустыми значениями, что, согласитесь, нелогично - если надо выбрать записи с пустой строчкой то и параметр должен быть задан пустой строкой. softwarer Я абсолютно уверен в том, что Вы внимательно прочитали стандарт ANSI SQL, хорошо обдумали утверждение и говорите со знанием дела. Или же Вы опираетесь на опыт MSSQL, где невозможно предсказать результат выполнения следующего простейшего скрипта: Код: plaintext А Вы то хорошо обдумали? Я лично могу предсказать результат - 'not equal', поскольку null = null -> null -> false ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 17:00 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
SergSuper2 softwarer Допустим есть таблица с неким символьным полем fld. И есть некий параметр. Вам надо выбрать все значения равные этому параметру. Если параметр не задан (т.е. null) - ничего выбирать не нужно. Получается что в Оракле в этом случае выберуться записи с пустыми значениями, что, согласитесь, нелогично Это было бы нелогично, если бы происходило именно так. Но поскольку происходит по-другому - все будет в точности так, как Вы хотите :) Вопрос в другом. Oracle не различает null и пустую строку, и как следствие - любая задача, где хочется их различать, требует изменения в проектном решении. Можно сказать, что в Oracle нет такой фичи - как, скажем, в каком-то другом сервере нет каких-то других фич. Там, где они нужны, их приходится компенсировать работой проектировщика. Да, конечно, с точки зрения "лучше, чтобы было все" это недостаток. Но - недостаток, который до недавнего времени я считал практически не мешающим. А с недавнего времени считаю еще и практически удобным :) SergSuper А Вы то хорошо обдумали? Я лично могу предсказать результат - 'not equal', поскольку null = null -> null -> false Значит, как ни странно, я знаю MSSQL лучше Вас. Поскольку для меня не составит труда получить результатом скрипта как тот, так и другой результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 17:21 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
softwarerИли расскажите мне, как нормальные контролы в нормальной клиентской среде позволят мне писать работающие запросы. Заодно - ознакомьтесь с упоминанием недостатка, который я вижу в "нормальных клиентских контролах". У вас не контролы типа "DBEditBox" обновляют данные в БД а запрос порождаемый на основании данных измененных этим контролом в DataSet-е. Как это делается, сильно зависит от среды. softwarerЯ абсолютно уверен в том, что Вы внимательно прочитали стандарт ANSI SQL, хорошо обдумали утверждение и говорите со знанием дела. Или же Вы опираетесь на опыт MSSQL, где невозможно предсказать результат выполнения следующего простейшего скрипта: Результат выполнения этого скрипта зависит от значения SET ANSI_NULLS В случае SET ANSI_NULLS ON он будет not equal (правильно с точки зрения ANSI SQL), как вам уже объяснил SergSuper. Если бы у Oracle был бы такой "переключатель" на "правильное понимание NULL" вопрос бы отпал сам собой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 17:59 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
LeonidУ вас не контролы типа "DBEditBox" обновляют данные в БД а запрос порождаемый на основании данных измененных этим контролом в DataSet-е. "Запрос, порожденный на основании данных" - это, извините, бред. Данные - параметры - подставляются в запрос, в том числе в MSSQL. Другой вопрос, что судя по словам pkarklin , в MSSQL это делается сильно.. неординарно, через промежуточную обертку. Leonid Как это делается, сильно зависит от среды. Если Вы не понимаете, что такое "написать запрос" - боюсь, я не смогу объяснить Вам, о чем, собственно, спрашивал. LeonidРезультат выполнения этого скрипта зависит от значения SET ANSI_NULLS Я в курсе :) LeonidЕсли бы у Oracle был бы такой "переключатель" на "правильное понимание NULL" вопрос бы отпал сам собой. "Правильное", видимо, равно "как в MSSQL"? На заданный вопрос Вы не ответили: Вы действительно внимательно проанализировали стандарт? Какой именно? Или просто вякаете "не соответствует", поскольку не соответствует известной Вам реализации, про которую говорят, что она соответствует стандарту? Кстати, если бы был переключатель - это было бы хуже любого решения. Самое мерзкое, что имеет разработчик - знание, что "посмотреть на программный код" недостаточно, чтобы быть уверенным, как же он будет работать. Что и показывает мой пример - судя по объяснению SergSuper, наткнувшись в форуме на проблему типа "у меня такой скрипт выдает "равно"", он сказал бы "такого не может быть". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 18:10 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Еще раз повторю, что вы говорили: softwarerВ каждой форме десять-двадцать полей. Итого - из десяти тысяч потенциальных "вправе" программист клиентской части несколько раз забыл, ошибся. softwarerПоследуйте собственному примеру - отделите мух от котлет. Или расскажите мне, как нормальные контролы в нормальной клиентской среде позволят мне писать работающие запросы. Заодно - ознакомьтесь с упоминанием недостатка, который я вижу в "нормальных клиентских контролах". А теперь вы говорите: softwarerЕсли Вы не понимаете, что такое "написать запрос" - боюсь, я не смогу объяснить Вам, о чем, собственно, спрашивал.Да уж, боюсь не пойму Вы, похоже, сами прыгаете между понятиями. Хочется спросить вы сами-то понимаете о чем говорите? :) softwarerДругой вопрос, что судя по словам pkarklin, в MSSQL это делается сильно.. неординарно, через промежуточную обертку.?????? О чем это вы? Вы пишете/писали клиентские приложения? На чем? автор"Правильное", видимо, равно "как в MSSQL"?Нет, как в ANSI SQL В том же MSSQL вне зависимости от SET ANSI_NULLS, NULL <> '' авторНа заданный вопрос Вы не ответили: Вы действительно внимательно проанализировали стандарт? Какой именно? Или просто вякаете "не соответствует", поскольку не соответствует известной Вам реализации, про которую говорят, что она соответствует стандарту? Вы раздражены и озлоблены, а значит не правы :) Но отвечать по хамски и я могу: Поэтому, еще раз для тупых: пустая строка - это не NULL. NULL - это "ничто". Придется вам с этим жить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 18:37 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
LeonidЕще раз повторю, что вы говорили: Заодно повторите пожалуйста то, что опустили из этого повторения. По поводу процитированного - я говорил о нежелании ставить галочки в каждом из 10.000 dbcontrol-ов. Кроме того, я говорил о том, что "решают" по-разному, и в результате де-факто ER-ки становится недостаточно, чтобы написать запрос - нужно еще смотреть, что именно решили в каждом конкретном случае. Leonid softwarerДругой вопрос, что судя по словам pkarklin, в MSSQL это делается сильно.. неординарно, через промежуточную обертку.?????? О чем это вы? О том, что MSSQL по каким-то странным причинам не поддерживает обычный binding параметров. Поэтому передаваемый с клиента SQL приходится либо оборачивать в вызов хранимки (кажется, sp_executesql - так, в частности, автоматом поступает ADO), либо нагружать сервер дополнительной работой по parsing-y. В том же MSSQL вне зависимости от SET ANSI_NULLS, NULL <> '' И? Вы раздражены и озлоблены, а значит не правы :) Вы ожидаетесь в первом и втором, а значит рискуете ошибиться и в третьем. Поэтому, еще раз для тупых: пустая строка - это не NULL. NULL - это "ничто". Придется вам с этим жить Если для тупых - то почему жить с этим мне? Тем более, судя по всему, с этим живете Вы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 19:37 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Тут грят, что Оракл NULL и пустую строку не различает. Объясните мне, значит ли это, что если я в оракле сделаю подряд Код: plaintext 1. а потом сделаю Код: plaintext 1. то он мне обе строки вернёт? Или он все же вернет именно так, как я это вставил - т.е. только вторую сторку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 19:58 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Мимо пробегал... пишет: > Тут грят, что Оракл NULL и пустую строку не различает. Объясните мне, > значит ли это, что если я в оракле сделаю подряд > > INSERT INTO TEST(COL1) VALUES(NULL) и > INSERT INTO TEST(COL1) VALUES('') > > > а потом сделаю > > SELECT * FROM TEST WHERE COL1 = '' > > > то он мне обе строки вернёт? Или он все же вернет /именно так, как я это > вставил/ - т.е. только вторую сторку? Не угадал оба раза. Читай первое сообщение в топике. Твой запрос не вернет вообще ничего. А вот WHERE COL1 IS NULL вернет обе строки. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 20:21 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
То есть фактически в Оракле LENGTH(NULL) = 0 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 20:33 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
О! я опять не угадал Спецом нашел руководство разработчика... Фраза оттуда Код: plaintext ИМХО обзывая это как "известная багофича" последнее слово надо писать как "багофича". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 20:44 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун> INSERT INTO TEST(COL1) VALUES(NULL) и > INSERT INTO TEST(COL1) VALUES('') > а потом сделаю > > SELECT * FROM TEST WHERE COL1 = '' Твой запрос не вернет вообще ничего. А вот WHERE COL1 IS NULL вернет обе строки. Александр, не флейма ради, а истины для: в нашей системе за подобные шалости сервера нас бы давно порвали на британский флаг. Это я к тому, что мир разнообразен и не сводится к глобусу Оракла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 21:31 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Мимо пробегал...Если строка str пуста, LENGTH возвращает NULL. Прошу прощения, а что вставится в таком запросе insert into test( intcol) values( LENGTH(:a) + LENGTH(:b)) если один из параметров a или b окажется пустой строкой? Тоже NULL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 21:42 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
авторЗначит, как ни странно, я знаю MSSQL лучше Вас. Поскольку для меня не составит труда получить результатом скрипта как тот, так и другой результат. Вы не находите что всё-таки есть разница между "результат неопределён" и "результат зависит от настроек"? А то напишите SET PARSEONLY On и с чистой совестью можете говорить что MS SQL вообще ни один запрос не может выполнить. Что касается стандарта ANSI, точнее его внимательного прочтения. Я лично его не читал, не знаю читал ли его Leonid, сомневаюсь что Вы его читали, но думаю в MS то кто-то его читал, не просто так же они назвали ANSI_NULLS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 22:58 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
2 softwarer: кроме строковых, есть и другие типы. для каждого делать своё поведение на null? например, BLOB. Может при вставке вордовского документа стоит проверить его на "пустоту" и вставить null вместо пустого документа (а он ведь есть, хоть и пустой)? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 08:39 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Не понимаю о чем вы спорите То, что сделано в Оракле, правильно по определению Если это не соответствует стандарту - тем хуже для стандарта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 10:22 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Мимо пробегал... Код: plaintext Это никому не нравится :) Безусловно, по-своему логично, но претензии ораклоидов к реализации сводятся почти исключительно именно к этой детали; хочется, чтобы length('') == 0. Мимо пробегал...Вы не находите что всё-таки есть разница между "результат неопределён" и "результат зависит от настроек"? Я нахожу, что я сказал совершенно однозначную фразу: "невозможно предсказать результат выполнения скрипта [по тексту этого скрипта]". Мало того, SergSuper, уверенно предсказав результат, продемонстрировал именно ту опасность, которую я имел в виду. Впрочем, изначально я не имел намерения говорить о недостатках MSSQL - исключительно ответ собеседнику, который "не читал, но осуждает". Мимо пробегал...Что касается стандарта ANSI, точнее его внимательного прочтения. Я лично его не читал, не знаю читал ли его Leonid, сомневаюсь что Вы его читали, Читал. И знаю, как он построен. Почему и отношусь к заявлениям "нарушает стандарт" очень, назовем так, скептически - ANSI SQL построен так, что его трудно нарушить. Если говорить о стандарте-2003 - в него ухитрились внести как SEQUENCE, так и IDENTITY, но не сделали при этом напрашивающегося, актуального и абсолютно естественного шага - IDENTITY, запитанного от SEQUENCE. Полагаю, понимаете, почему. Мимо пробегал...но думаю в MS то кто-то его читал, не просто так же они назвали ANSI_NULLS Думаю, читали. Мало того, если Вы обратите внимания - я нигде не говорил, что MSSQL нарушает стандарт. Но делать из этого (и только из этого) вывод, что любая другая реализация стандарт нарушает - значит, демонстрировать неграмотность и неумность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 11:00 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
eNoseкроме строковых, есть и другие типы. для каждого делать своё поведение на null? Практической необходимости в этом я не вижу. Увижу - скажу, что хорошо бы сделать. Именно с блобами в Oracle связан не слишком удобный момент, проистекающий из реализации блобов - необходимость использовать функцию EMPTY_BLOB(). Это вызывает те же самые проблемы - скажем, проверка на пустоту блоба вообще говоря должна идти через coalesce (dbms_lob.length(blob), 0)=0 - но поскольку работа с блобами - не самая эффективная задача, таких проверок обычно избегают, не оставляя полям значения EMPTY_BLOB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 11:10 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
ну я пишет: > Александр, не флейма ради, а истины для: в нашей системе за подобные > шалости сервера нас бы давно порвали на британский флаг. Это я к тому, > что мир разнообразен и не сводится к глобусу Оракла. Конечно не сводится. Я Оракл и не использую. И не уверен, что в ближайшее время буду использовать даже для немаленьких баз. Меня ASA больше устраивает по множеству параметров. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 11:55 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
А вот кстати что ANSI стандарт говорит Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 14:29 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
softwarerПо поводу процитированного - я говорил о нежелании ставить галочки в каждом из 10.000 dbcontrol-ов. Кроме того, я говорил о том, что "решают" по-разному, и в результате де-факто ER-ки становится недостаточно, чтобы написать запрос - нужно еще смотреть, что именно решили в каждом конкретном случае.Выберите/напишите контролы, где не надо ставить галочки . Наследование то же ни кто не отменял. softwarerО том, что MSSQL по каким-то странным причинам не поддерживает обычный binding параметров. Поэтому передаваемый с клиента SQL приходится либо оборачивать в вызов хранимки (кажется, sp_executesql - так, в частности, автоматом поступает ADO), либо нагружать сервер дополнительной работой по parsing-y.А чем вас пугает вызов "хранимки" sp_executesql? Ну да, не самая удачная реализация binding-а, но я не понимаю при чем здесь это? Тема другая и не валите все в кучу. softwarerЭто никому не нравится :) Безусловно, по-своему логично, но претензии ораклоидов к реализации сводятся почти исключительно именно к этой детали; хочется, чтобы length('') == 0.Вот, блин, и приплыли. Одно тянет за собой другое. Стоит ли говорить после этого, что стандарты, не дураками писаны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 16:35 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
SergSuperА вот кстати что ANSI стандарт говорит. Браво. Кстати, Вы прочитали то место, где говорится, что <literal> - это вовсе не строковая константа? Теперь два комментария. Комментарий первый: здесь сказано "нет" (то есть - "нет в стандарте"). С чем никто не спорит. Для того, чтобы наличие такого литерала противоречило стандарту, здесь пришлось бы увидеть "не должно быть литерала...". Почему? По той простой причине, что иначе любое расширение стандарта придется считать нарушением оного. Теперь второй комментарий - о соответствии стандарту вообще. Позволю себе другую фразу из стандарта (SQL'92, сейчас нет под рукой новее) Код: plaintext Сколько из этих операций Вы найдете в MSSQL? Говорите, он соответствует стандарту? Нет, соответствует, я с этим не собираюсь спорить. Соответствовать, как известно, можно по-разному. А вот противоречить - ... Вы сделали хорошую попытку, но обреченную на неудачу. Если бы все действительно было однозначно - как думаете, смог бы Оракл заявлять о соответствии стандарту? Полагаете, их спецы не просчитали все тонкости? А спецы того же мелкософта не протестировали их работу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 18:38 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
LeonidВыберите/напишите контролы, где не надо ставить галочки . Решение, безусловно, лучшее чем ничего, но недостаточное. Оно позволяет ставить меньше пяти тысяч галочек - безусловно. От ошибок, однако, оно не спасает. Впрочем, если Вы скажете, что "нестандартное значение" нужно одной из ста или одной из тысячи галочек - я соглашусь, что вероятность ошибки сообразно падает. Правда, сообразно падает и ценность этой фичи, и критичность ее отсутствия. Наследование то же ни кто не отменял. LeonidА чем вас пугает вызов "хранимки" sp_executesql? Вызов хранимки меня не пугает. Меня пугает идея "формировать sql из данных" - я не вижу пути понять это иначе, чем Код: plaintext Эта идея меня "пугает" - правда, это уже тема другой беседы. Если хотите, считайте, что я придираюсь к словам. LeonidВот, блин, и приплыли. Одно тянет за собой другое. Есть такой эффект. В данном случае в Oracle именно что сказали А, но не решились сказать Б. Из этого не следует, что не стоило говорить А. Даже без Б - с моей точки зрения - его стоило сказать. Но лучше было бы сказать и Б тоже; с этим я согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 18:46 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
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 тоже была такая фигня и мне это совершенно не нравилось. И чесно говоря удивляет чем же Вам это так нравится. А все эти стандарты мне по барабану. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 19:50 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
softwarer LeonidА чем вас пугает вызов "хранимки" sp_executesql? Вызов хранимки меня не пугает. Меня пугает идея "формировать sql из данных" - я не вижу пути понять это иначе, чем А меня ПУГАЕТ, то что ADO имеет наглость лезть ВНУТРЬ запроса. Неправильно выправлять кривизну сервера кривизной методов доступа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2005, 08:39 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)А меня ПУГАЕТ, то что ADO имеет наглость лезть ВНУТРЬ запроса. Не совсем так. По моим ощущениям, ADO - продукт примерно того же класса, что и BDE, со всеми теми же преимуществами-недостатками, но именно в данном случае большого криминала нет - ADO не лезет в запрос, а оборачивает его, вызывает хранимку, передавая ей текст запроса. Правда, какую-то бяку с параметрами при этом я видел. В качестве веселого оффтопика: когда я показал оракловый трейс с bind-переменными, мой оппонент заподозрил, что это трейс BDE. По его мнению, при передаче необернутого запроса параметры должны были быть подставлены на клиенте - в смысле, переменные заменены значениями прямо в тексте запроса. Gluk (Kazan)Неправильно выправлять кривизну сервера кривизной методов доступа Безусловно. Собственно, после того разговора мне стало много понятнее, почему с точки зрения MSSQL-евцев все надо делать на хранимках. В частности, иначе там идет принудительный cursor_sharing=force. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2005, 09:27 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
А, понял :) У нас тут с ADO 1С-ник неделю назад трахался. Она кволочь пыталась сделать запрос обновляемым, заботливо вставляя в него ROWID, а 1С этой заботы не понимала Потом еще пришлось обернуть все типы в TO_CHAR, но это уже камушек в 1C :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2005, 09:43 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) softwarer LeonidА чем вас пугает вызов "хранимки" sp_executesql? Вызов хранимки меня не пугает. Меня пугает идея "формировать sql из данных" - я не вижу пути понять это иначе, чем А меня ПУГАЕТ, то что ADO имеет наглость лезть ВНУТРЬ запроса. Неправильно выправлять кривизну сервера кривизной методов доступа Собственно ADO(OLEDB) так и были задуманы, чтобы лезть в нутро запроса и делать массу других малополезных вещей(автоматически строить INSERT и UPDATE для начала). Правда корректная установка свойств и атрибутов соединения/команды позволяет извести эти чудачества начисто. Всё семейство процедур sp_exec%,sp_prep%,sp_cursor% служит для выправления чудачеств безнадёжно устаревшего TDS 4.2, 7, 8, но это тема для отдельной дискуссии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2005, 10:29 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
softwarerНе совсем так. По моим ощущениям, ADO - продукт примерно того же класса, что и BDE, со всеми теми же преимуществами-недостатками, но именно в данном случае большого криминала нет - ADO не лезет в запрос, а оборачивает его, вызывает хранимку, передавая ей текст запроса.Не отдавайтесь на волю ощущениям :) А то как в анекдоте: Так вы всю науку к @#$% сведете :) ADO - это ActiveX обертка поверх OLE DB. OLE DB же сам по себе очень эфективный механизм. BDE здесь ни при чем и классы и способы низкоуровневого доступа у них разные. Сравнивать их по меньшей мере не корректно. softwarerЕсть такой эффект. В данном случае в Oracle именно что сказали А, но не решились сказать Б. Из этого не следует, что не стоило говорить А. Даже без Б - с моей точки зрения - его стоило сказать. Но лучше было бы сказать и Б тоже; с этим я согласен.Ну не знаю, на мой взгляд, "А" того не стоило. Ну да, в конце концов, вам с этим возиться, не мне. Я же скорее соглашусь с SergSuper: SergSuperпревращение пустой строки в NULL это нелогично и неудобно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2005, 10:47 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
LeonidНе отдавайтесь на волю ощущениям :) А то как в анекдоте: Так вы всю науку к @#$% сведете :) ADO - это ActiveX обертка поверх OLE DB. OLE DB же сам по себе очень эфективный механизм. Мне ближе точка зрения Alexey Sh - про "изведение чудачеств". Leonid BDE здесь ни при чем и классы и способы низкоуровневого доступа у них разные. Сравнивать их по меньшей мере не корректно. Хм. Как бы Вам сказать.. смотреть можно с разных точек зрения. ADO, как и BDE - это некий "толстый провайдер". То есть не просто интерфейс драйверов к БД, но также куча нетривиальной логики. Как и у BDE, как и у других продуктов подобного класса - у него есть как преимущества (возможность пользоваться этой логикой) так и недостатки - эта логика, а также вызванные ей ограничения реализации, проявляются и мешают в достаточно неожиданных местах. LeonidНу да, в конце концов, вам с этим возиться, не мне. Безусловно :) С тем моментом, что как раз "возиться" и оказывается ненужным. Собственно, пример на эту тему только что был на RSDN - там человек спрашивал, пройдет ли в оракле запрос, составленный для DB2 и MS, и ему посоветовали заменить coalesce(...) на просто field is null. По моим текущим ощущениям, именно это - типичный случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2005, 11:09 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
softwarer Собственно, пример на эту тему только что был на RSDN - там человек спрашивал, пройдет ли в оракле запрос, составленный для DB2 и MS, и ему посоветовали заменить coalesce(...) на просто field is null. По моим текущим ощущениям, именно это - типичный случай. :) А как было бы удобно если для int-а при присваивании нуля подставлялся бы NULL. Это ж coalesce(field ,0)=0 можно было бы заменить на просто field is null ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2005, 11:45 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
SergSuperА как было бы удобно если для int-а при присваивании нуля подставлялся бы NULL. Это было бы очень удобно, если бы в полях ввода ноль и null отображались бы одинаково, а в логике обработки они практически всегда означали бы одно и то же. SergSuperЭто ж coalesce(field ,0)=0 можно было бы заменить на просто field is null ! Можно было бы. "Как было бы удобно" определяется тем, насколько часто это нужно, а насколько часто - мешало бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2005, 11:53 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
авторМожно было бы. "Как было бы удобно" определяется тем, насколько часто это нужно, а насколько часто - мешало бы. Хочется повертеть пальцем у виска :) Оставте в покое вы этих убогих ораклистов с их традициями. Не долго им осталось. Не тронь Г пока не завоняет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2005, 12:07 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
Странно, почему все провокаторы не регестряться на форуме ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2005, 12:10 |
|
||
|
Нарвался в Оракле. Может везде так...
|
|||
|---|---|---|---|
|
#18+
DoomaХочется повертеть пальцем у виска :) У меня уже палец устал, читая про такие странности отдельно взятых и якобы крутых софтин ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2005, 13:07 |
|
||
|
|

start [/forum/topic.php?all=1&fid=35&tid=1553920]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
113ms |
get tp. blocked users: |
2ms |
| others: | 256ms |
| total: | 463ms |

| 0 / 0 |
