![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL, like & '%' [D6]
DeepGray © (2004-08-04 13:26:00)Нужен совет. Задача такова:
Есть SQL-скрипт
SELECT * FROM DOVIDNYK A, VYMIR B WHERE A.CODE_V=B.CODE_VYMIRU
AND KLASS_CODE LIKE ':kod'
AND TO_CHAR (OBLIK_NUMB) LIKE ':num'
AND ((UPPER (LONG_NAME) LIKE UPPER (':lname')) OR (UPPER SHORT_NAME) LIKE UPPER (':sname')))
AND UPPER (TYPE_P) LIKE UPPER (':tip')
AND UPPER (MARKA) LIKE UPPER (':marka')
AND UPPER (SORT_P) LIKE UPPER (':sort')
AND UPPER (RAZMER) LIKE UPPER (':razmer')
AND UPPER (KRESLENNYA) LIKE UPPER (':chert')
AND UPPER (TU) LIKE UPPER (':tu')
AND UPPER (GOST) LIKE UPPER (':gost')
ORDER BY KLASS_CODE
если необходимо, то я присваиваю соответствующему параметру значение, если по этому параметру отбирать данные не надо, то параметру присваиваю '%'.
Запрос отрабатывается не правильно (IsEmpty=true, хоть я знаю что это не так).
Начинаю искать ошибку и получаю интерестный результат. После удаления выделенных строк всё работает. Добавляю по одной строке, каждый раз удаляя прошлую - со всеми (по одной) работает.
Например,
SELECT * FROM DOVIDNYK A, VYMIR B WHERE A.CODE_V=B.CODE_VYMIRU
AND KLASS_CODE LIKE ':kod'
AND TO_CHAR (OBLIK_NUMB) LIKE ':num'
AND ((UPPER (LONG_NAME) LIKE UPPER (':lname')) OR (UPPER SHORT_NAME) LIKE UPPER (':sname')))
AND UPPER (TYPE_P) LIKE UPPER (':tip')
или
SELECT * FROM DOVIDNYK A, VYMIR B WHERE A.CODE_V=B.CODE_VYMIRU
AND KLASS_CODE LIKE ':kod'
AND TO_CHAR (OBLIK_NUMB) LIKE ':num'
AND ((UPPER (LONG_NAME) LIKE UPPER (':lname')) OR (UPPER SHORT_NAME) LIKE UPPER (':sname')))
AND UPPER (TU) LIKE UPPER (':tu')
и т.д.
Опять добавляю все строки вместе - не работает. Подскажите пожалуйста, где я допускаю ошибку.
roottim (2004-08-04 13:49:00) [1]сделай свой запрос в sqlplus(но удобнее в plsqldev) вместо параметров явные значения. А затем предоставь результат.
> хоть я знаю что это не так
на каком основании ты это знаешш.. вроде-бы или как-бы
DeepGray (2004-08-04 13:36:00) [2]Млин. Вот что значит не использовать Кнтрл-Ц и Кнтрл-В.
Фрагменты кода содержат ошибку.
Вот те коды, к-рые у меня в исходнике:
Код1.
SELECT * FROM DOVIDNYK A, VYMIR B WHERE A.CODE_V=B.CODE_VYMIRU
AND KLASS_CODE LIKE :kod
AND TO_CHAR (OBLIK_NUMB) LIKE :num
AND ((UPPER (LONG_NAME) LIKE UPPER (:lname)) OR (UPPER SHORT_NAME) LIKE UPPER (:sname)))
AND UPPER (TYPE_P) LIKE UPPER (:tip)
AND UPPER (MARKA) LIKE UPPER (:marka)
AND UPPER (SORT_P) LIKE UPPER (:sort)
AND UPPER (RAZMER) LIKE UPER (:razmer)
AND UPPER (KRESLENNYA) LIKE UPPER (:chert)
AND UPPER (TU) LIKE UPPER (:tu)
AND UPPER (GOST) LIKE UPPER (:gost)
ORDER BY KLASS_CODE
Код2.
SELECT * FROM DOVIDNYK A, VYMIR B WHERE A.CODE_V=B.CODE_VYMIRU
AND KLASS_CODE LIKE ':kod'
AND TO_CHAR (OBLIK_NUMB) LIKE ':num'
AND ((UPPER (LONG_NAME) LIKE UPPER (':lname')) OR (UPPER SHORT_NAME) LIKE UPPER (':sname')))
AND UPPER (TYPE_P) LIKE UPPER (':tip')
Код3.
SELECT * FROM DOVIDNYK A, VYMIR B WHERE A.CODE_V=B.CODE_VYMIRU
AND KLASS_CODE LIKE ':kod'
AND TO_CHAR (OBLIK_NUMB) LIKE ':num'
AND ((UPPER (LONG_NAME) LIKE UPPER (':lname')) OR (UPPER SHORT_NAME) LIKE UPPER (':sname')))
AND UPPER (TU) LIKE UPPER (':tu')
DeepGray (2004-08-04 13:28:00) [3]Да, я галочку напротив СУБД поставил, но что-то не сработало.
Вообщем у меня Оракл.