Как присвоить значение NULL

Обсуждение возникших проблем, предложений и ошибок ODAC компонентов
Закрыто
octopus312
Сообщения: 10
Зарегистрирован: Вт 07 май 2013 13:44

Как присвоить значение NULL

Сообщение octopus312 » Пт 11 окт 2013 12:21

Всем привет.
Я использую Codegear RadStudio 2009, язык C++, DevArt Oracle Data Access 9.0.1
У меня возникла следующая проблема, в запросе TOraQuery, вместо NULL,
почему-то передается 0. И выдает ошибку что нельзя записать 0 в поле date.
Например такой вот код:
OraConnection->qry->ParamByName("DATE")->Value = NULL;

при попытке выполнить запись в БД, выкидывает ошибку, что была попытка записать число 0, в поле с типом DATE.

Я вот думаю может нулл нужно как-то по другому присваивать?

Заранее спасибо за помощь.

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Re: Как присвоить значение NULL

Сообщение Alexp » Пн 14 окт 2013 08:39

Добрый день,

NULL в С++ и NULL в Oracle - различные значения, Вы не можете присваивать NULL параметру типа Date/DateTime, если вы явно укажете тип параметра, то на присвоении значения NULL такому параметру вы получите ошибку "Cannot Convert Type". Для того чтобы вставить NULL в поле, Вы можете либо вообще не задавать значение параметра, либо очищать этот параметр

Код: Выделить всё

ParamByName("p1")->Clear();

octopus312
Сообщения: 10
Зарегистрирован: Вт 07 май 2013 13:44

Re: Как присвоить значение NULL

Сообщение octopus312 » Пн 14 окт 2013 09:03

Спасибо за исчерпывающий ответ.
Ситуация прояснилась.

Немного шире опишу проблему которая была:
дело в том, что при повторном использовании INSERT запроса,
если вообще не присваивать значение,
он использует значение которое было использовано в предыдущий раз.
Отсюда и возникла необходимость явно указывать NULL.

Еще раз большое спасибо за ответ.

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Re: Как присвоить значение NULL

Сообщение Alexp » Пн 14 окт 2013 11:35

Добрый день,

В Вашем случае, для присвоения параметру значения NULL Вам необходимо явно очищать параметр

Код: Выделить всё

ParamByName("DATE")->Clear();

octopus312
Сообщения: 10
Зарегистрирован: Вт 07 май 2013 13:44

Re: Как присвоить значение NULL

Сообщение octopus312 » Ср 16 окт 2013 08:14

Alexp
Спасибо большое за своевременную помощь.
Ваша информация мне действительно помогла, причем не в первый раз.

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Re: Как присвоить значение NULL

Сообщение Alexp » Ср 16 окт 2013 09:55

Добрый день,

Я рад что смог помочь. Если у Вас возникнут дальнейшие вопросы по ODAC, пожалуйста пишите нам.

Закрыто