Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

NULL в Oracle и пустая строка в Delphi


Страницы:   1 2

Razrab7 ©   (2008-09-02 15:44:00) 

Здравствуйте, коллеги! Подключаюсь к БД Oracle через ADO, используя компоненты ADOConnection и ADOQuery. Проблемный кусок кода:
sqlstr := 'INSERT INTO OBH_RZ_DAT '+
               ' (ID_FILE, ID_HOU, NM_KN) '+
               ' VALUES (:pr_file, :pr_id_hou, :pr_nm_kk)';
     with DataModule2.ADOQuery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add(sqlstr);
        Parameters[0].Value := p_id_file;
        Parameters[1].Value := p_id_hou;
        Parameters[2].Value := p_nm_kk;
        ExecSQL;
        Close;
      end;

В данном случае я вставляю данные из Excel в Oracle. И если p_id_file, p_id_hou и p_nm_kk, взятые из файла Excel содержат данные, то все происходит нормально. Проблема наблюдается только, если в Excel какое-либо значение пустое. Delphi его видит как пустую строку, но Oracle при Insert естественно не видит там NULL. Вопрос: как в данном случае, именно через параметры корректно вставить в базу NULL?


Johnmen   (2008-09-03 13:08:00) [21]


> пишет неправлиьно задан Parameter. Несоответствие типов
> и т.п.

Прям вот так вот и пишет?


Ega23   (2008-09-03 13:06:00) [22]


> Попробовал, пишет неправлиьно задан Parameter.


1. Какой DataType параметра?
2. Какие атрибуты у параметра?


Johnmen   (2008-09-03 12:54:00) [23]


> незаслуженно обойдены вниманием трамваи.

Заслуженно, не сомневайся.


Razrab7   (2008-09-03 12:10:00) [24]

Ega23

if p_id_hou='' then Parameters[1].Value := Null;

Это не срабатывает. :( Попробовал, пишет неправлиьно задан Parameter. Несоответствие типов и т.п.
Как быть, кто знает? Delphi-шный nil также не срабатывает.


Razrab7   (2008-09-03 11:46:00) [25]

Медвежонок Пятачок

Там пустая строка, с пробелами как раз-таки абсолютно нормально все должно пройти, по крайней мере для Varchar2.


Razrab7   (2008-09-03 11:44:00) [26]

Игорь Шевченко

По крайней мере с Varchar2, если в Excel пустая строка, точно не работает.


Игорь Шевченко   (2008-09-03 09:58:00) [27]


> Я вот на метро езжу. И автобус пользую...:)


незаслуженно обойдены вниманием трамваи.


> но Oracle при Insert естественно не видит там NULL


А типы полей в оракле какие ?


Ega23   (2008-09-02 20:04:00) [28]


> Clear бы в ADO параметрах не помешал бы.


Согласен. Но чего нет - того нет.


evvcom   (2008-09-02 17:37:00) [29]

1. ну про "строго к теме" в [3] ничего нет
2. Clear бы в ADO параметрах не помешал бы. Почему-то во всех прочих это есть, а в адо нет!? Я предполагал, что есть.
3. Мало ни мало, а я вот на метро не езжу. Почти. А автобус, бывает... пользую. :)


Johnmen   (2008-09-02 17:20:00) [30]


> evvcom ©   (02.09.08 17:10) [6]

"Вряд ли" относилось строго к теме.
А так - мало ли, кто что пользует. Я вот на метро езжу. И автобус пользую...:)


evvcom   (2008-09-02 17:10:00) [31]

а ну с ADO может и вряд ли. Я все же для Оракла пользую заточенные под него компоненты, а там это уже не "вряд ли" :-)


Медвежонок Пятачок   (2008-09-02 17:07:00) [32]

но Oracle при Insert естественно не видит там NULL.

так может там не пустая строка, а пробельчики?


Ega23   (2008-09-02 17:04:00) [33]


> evvcom ©   (02.09.08 16:55) [2]
>
> или Parameters[1].Clear
>


Судя по тому, что DataModule2.ADOQuery1- это будет TParameter, а не TParam. А у TParameter нет метода Clear.


Johnmen   (2008-09-02 17:02:00) [34]


> evvcom ©   (02.09.08 16:55) [2]
> или Parameters[1].Clear

Эт вряд ли (с)


evvcom   (2008-09-02 16:55:00) [35]

или Parameters[1].Clear


Ega23   (2008-09-02 15:46:00) [36]

if p_id_hou='' then Parameters[1].Value := Null;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо