Форум: "Базы";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
ВнизКак передать в TQuery параметр равный null Найти похожие ветки
← →
alsov1 (2004-11-05 16:03) [0]Приветствую Мастера!
Не получается передать в кверик параметр равный null
делаю так:
query.sql.add("select * from table1 where id=:id");
query.Parameters.Items[0].Value := "Null";
query.open;
Делфя компилит, а при выполнении ругается.
Причём пробывал вместо
query.Parameters.Items[0].Value := "Null";
писать и
query.Parameters.ParamValues["id"] := "Null"
и
query.Parameters.ParamByName("id").value := "Null"
Если кто знает - помогите
Заранее спасибо
← →
Vlad © (2004-11-05 16:06) [1]
> query.Parameters.Items[0].Value := "Null";
LOL :-)
query.Parameters.ParamByName("id").Clear;
← →
alsov1 (2004-11-05 16:12) [2]Vlad
Не работает, даже делфя не компильнула - говорит нет метода Clear.
Может стоит оговориться, что используется TADOQuery
← →
Vlad © (2004-11-05 16:14) [3]
> alsov1 (05.11.04 16:12) [2]
Сорри, тогда Value:= null;
← →
Соловьев © (2004-11-05 16:14) [4]
> query.Parameters.Items[0].Value := "Null";
>
> LOL :-)
>
> query.Parameters.ParamByName("id").Clear;
uses Variants;
query.Parameters.Items[0].Value := Null;
← →
alsov1 (2004-11-05 16:26) [5]На это -
query.Parameters.Items[0].Value := Null;
тот же эффект - компилин но не работает
пишет "неправильно определён объект Parametr"
← →
Vlad © (2004-11-05 16:29) [6]
> alsov1 (05.11.04 16:26) [5]
свойства DataType, Direction установлено?
← →
Соловьев © (2004-11-05 16:34) [7]
> "select * from table1 where id=:id"
а что автор хочет получить от запроса
select * from table1 where id=null?
для сравнения с NULL надо писать where field is null
← →
alsov1 (2004-11-05 16:35) [8]DataType - ftUnknown
direction - pdInput
Поигрался с параметрами - добился того чтоб не ругалось
Attributes - [paNullable]
DataType - тип поля ftInteger
но результат всё-равно отличается от запроса
select * from table1 where id is null
← →
alsov1 (2004-11-05 16:40) [9]Есть таблица
id ido text
1 null gjdg
2 null dfgsdg
3 1 dfgdsfgds
надо выводить поочерёдно то все записи где ido = null,
то где ido = числу
← →
Johnmen © (2004-11-05 16:56) [10]
where (:id1 is null) or (id=:id2)
где пар.id1=id2
← →
alsov1 (2004-11-05 17:01) [11]Johnmen
откуда idl взялся
← →
KSergey © (2004-11-05 17:01) [12]> [10] Johnmen © (05.11.04 16:56)
> where (:id1 is null) or (id=:id2)
Только оптимизатору это дюже не понравится...
Я бы 2 запроса сколбасил разных. В зависимости от ситуации.
← →
Johnmen © (2004-11-05 17:06) [13]>KSergey © (05.11.04 17:01) [12]
Да, ты прав. Зависит от правила вычисления лог.выражений.where (:id1 is null) or ((id=:id2) and (:id3 is not null))
id1=id2=id3
← →
alsov1 (2004-11-05 17:08) [14]Так выходит лучше два запроса писать?
Дело в том, что эта процедурка довольно часто повторяться будет, не сильно ли это замедлит работу?
← →
KSergey © (2004-11-05 17:10) [15]> [13] Johnmen © (05.11.04 17:06)
> >KSergey © (05.11.04 17:01) [12]
>
> Зависит от правила вычисления лог.выражений.
Это я не совсем понял, признАюсь...
Вообще я имел в виду то, что OR оптимизатор жутко не любит, фактически оптимизация сразу летит в чертям. Когда-то тоже таким баловался "отключая" ненужные в данный момент парамтеры, но скорость была отвратной. Переделал на несколько запросов, разных, по ситуации.
← →
Johnmen © (2004-11-06 00:04) [16]>KSergey © (05.11.04 17:10) [15]
Ну про оптимизатор говорить - пустое. Ведь мы не знаем про тип СУБД.
А лог.выр. могут выч-ся слева-направо и наоборот.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.036 c