Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: TOracleQuery. Передача в переменную подстановки значения NULL.  (Прочитано 7503 раз)
0 Пользователей и 1 Гость смотрят эту тему.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« : 19-11-2009 14:52 » 

Пользуюсь компонентами "Direct Oracle Access 405" для доступа к Oracle из BCB6.
Заинтересовался вопросом, как можно в переменную подстановки передать значение NULL.

Типичная передача не-NULL значения:
Код:
  TDate someDate;

  OracleQuery->DeclareAndSet("SOME_DATE", otDate, someDate);
  // ...

Что-то не могу найти в доках, как подставить NULL.

Описание функции DeclareAndSet (для BCB и Delphi используется одна и та же библиотека и примеры в доке даны для Delphi):
Код:
procedure DeclareAndSet(Name: string; Type: Integer; Value: Variant);

Тип Varaint может содержать след. типы:
•   short
•   int
•   float
•   double
•   Currency
•   TDateTime (TDate автоматически приводится к TDateTime)
•   bool
•   WordBool
•   Byte
•   AnsiString&
•   char *
•   wchar_t * const
•   Ole2::IDispatch* const
•   Ole2::IUnknown* const

Т.е. никаких намеков на то, как закодировать NULL. Тем более, что TDate в своей основе - float, и NULL тут никак не выйдет.

Есть такое понятие как "substitution variables", но заменять дату на подстановку некошерно и не хотелось бы - может получиться Ж при иной настройке NSL на клиентской машине.
« Последнее редактирование: 19-11-2009 14:59 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 19-11-2009 16:39 » new

Судя по тому, что в поисковиках тема не раскрыта (даже если заменить TOracleQuery на Oracle), то полагаю, что напрямую никак нельзя.
Попробую таким методом:

Код:
DECODE(:VAL1_NULL, 0, :VAL1, NULL)
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines