Страница 1 из 1

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

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

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

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

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

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

Добавлено: Пн 14 окт 2013 08:39
Alexp
Добрый день,

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

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

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

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

Добавлено: Пн 14 окт 2013 09:03
octopus312
Спасибо за исчерпывающий ответ.
Ситуация прояснилась.

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

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

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

Добавлено: Пн 14 окт 2013 11:35
Alexp
Добрый день,

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

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

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

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

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

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

Добавлено: Ср 16 окт 2013 09:55
Alexp
Добрый день,

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