![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
переменные в ;sql в mssql?? [D6, MSSQL, Oracle, ]
ol © (2001-12-18 10:01:00)Подскажите правильно ли определяю переменные
where s.dat_tek between @d1 and @d2 and
s.subdivid=@podr
если да то как их потом прописать в компоненте(использую ADOQuery1),в оракле все гораздо проще, он сам их находит,
а тут что нужно руками прописывать в parameters?
пробовал прописать d1,d2,podr - ругается
Delirium (2001-12-18 12:40:00) [1]Попробуй вставить пробелы перед ":" и после параметров, хотя у меня всё и так работает.
ol (2001-12-18 11:55:00) [2]>where (s.dat_tek between :d1 and :d2 ) and
>( s.subdivid=:podr )
Line 43: Incorrect syntax near ":".
Delirium (2001-12-18 11:46:00) [3]
....
where (s.dat_tek between :d1 and :d2 ) and
( s.subdivid=:podr )
ol (2001-12-18 11:43:00) [4]>Если Вы напишите
>where s.dat_tek between :d1 and :d2 and
> s.subdivid=:podr
Так я уже пробовал
выдается ошибка
Line 43: Incorrect syntax near ":".
handra (2001-12-18 10:23:00) [5]Параметры в TADOQuery прописывают примерно так:
where s.dat_tek between :d1 and :d2 and s.subdivid=:podr
Есть одна тонкость! Параметры с одинаковыми именами по ParamByName не устанавливаются все (только первый из них), т.е конструкция %
where s.date_tek=:d1 or :d1 is null
по ParamByName не заработает, я делаю так:
declare @d1 datetime
set @d1=:d1
...
where s.date_tek=@d1 or @d1 is null
в этом случае нужно указать типы параметров вручную, а если используется динамически созданный TADOQuery, то вызывать Parameters.ParseSQL и для параметров со значением NULL вручную указывать тип данных
SergSuper (2001-12-18 10:18:00) [6]Вы путаете переменные сервера и параметры
Первые существуют только на сервере, вторые заполнются клиентской частью перед отсылкой запроса.
Если Вы напишите
where s.dat_tek between :d1 and :d2 and
s.subdivid=:podr
то "он сам их найдёт"