Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.17.6.75] |
|
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Сообщ.
#1
,
|
|
|
создаю кверик типа такого:
INSERT INTO TAB1 VALUES (:ID, :Numbers, :LogDate); :ID, :Numbers, :LogDate -- понятно параметры. В БД указано, что тип поля Numbers может быть NULL. Таким образом иногда я вставляю значение, а иногда и не надо ничего. Так вот, делаю ...->ParamByName("Numbers")->Clear(); потом даю на выполнение сиквел и что?! оно вместо NULL подставляет IS NULL! Ну и естественно вілетает ошибка... Такое впечатление, что Билдер думает, что этот параметр вставляется в секцию WHERE... Как все-таки заставить Билдер подставлять в текст сиквела не IS NULL, а именно NULL? |
Сообщ.
#2
,
|
|
|
В общем в книжке написано, что для вставки NULL значений есть 2 способа:
1 использовать слово NULL вместо реального значения. 2 предполагает использование разновидности синтаксиса команды INSERT, когда столбцы определяются явно, а где NULL тот столбец просто не пишет. ... может чем-то помог... |
Сообщ.
#3
,
|
|
|
В Борландовской АДО реализации параметры со значением Null и пустой строкой работают очень плохо, даже со всеми предосторожностями, изменением свойств параметра (есть там в свойствах TParameter установки по отношению к NULL) квери всё равно склонны вылетать, причём иногда с весьма странными ошибками, типа "нельзя использовать Blob field in Where statement" - т.е. кверю выбивает где-то на ранних стадиях компилляции, а ошибка всплывает какая ни поподя...
Мой совет, никогда не используйте параметры со значением "NUll" и "пустая строка", при необходимости их вставить прямо в квере и пишите: Insert into (MyField) Values (Null) В общем, если я ожидаю возможность появления такого значения, я вместо параметров генерю текст квери на-лету: не удобно, зато надёжно... |
Сообщ.
#4
,
|
|
|
Сделал через одно место, но все-же:
INSERT INTO TAB1 VALUES (:ID, IIF(:Numbers=0, NULL, :Numbers), :LogDate); Таким образом что-бы вставить NULL я параметру присваиваю 0. :o |