Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / IBExpert работает в IBX нет / 10 сообщений из 10, страница 1 из 1
12.01.2022, 04:45
    #40125933
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert работает в IBX нет
Конструкция для пропуска нулевых параметров
Код: sql
1.
select * from table1 where (field1 like iif(:param1 is null, '%' , :param1))



Такая конструкция замечательно работает в IBExpert, но при попытке открыть запрос TIBQuery, выдает исключение
Код: pascal
1.
Project Project1.exe raised exception class EIBClientError with message 'Unknown SQL Data type (32766)'
...
Рейтинг: 0 / 0
12.01.2022, 07:35
    #40125936
_avz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert работает в IBX нет
попробуй привести к нужному типу, что-то наподобие

cast(:param1 as varchar(100))
...
Рейтинг: 0 / 0
12.01.2022, 13:09
    #40125994
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert работает в IBX нет
antox
Конструкция для пропуска нулевых параметров
Код: sql
1.
where (field1 like iif(:param1 is null, '%' , :param1))




Я бы замен л эту конструкцию на такую:
Код: sql
1.
where (:param1 is null or field1 like :param1)


Так короче, нагляднее и работать будет быстрее.

Если и так ошибка будет - уже сказали, что попробовать. Или в делфи попробовать тип параметра вручную установить.
...
Рейтинг: 0 / 0
12.01.2022, 13:36
    #40126001
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert работает в IBX нет
antoxТакая конструкция замечательно работает в IBExpert, но при попытке открыть
запрос TIBQuery, выдает исключение

1. IBExpert использует FIB+, а не IBX.
2. Они изрядно модифицированы его автором для поддержки новых фич Firebird.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.01.2022, 16:26
    #40126041
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert работает в IBX нет
YuRock


Я бы замен л эту конструкцию на такую:
Код: sql
1.
where (:param1 is null or field1 like :param1)


Так короче, нагляднее и работать будет быстрее.


Не могу понять логику такой конструкции - :param1 is null исключает параметр из фильтрации?
...
Рейтинг: 0 / 0
12.01.2022, 16:26
    #40126042
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert работает в IBX нет
Dimitry Sibiryakov

antoxТакая конструкция замечательно работает в IBExpert, но при попытке открыть
запрос TIBQuery, выдает исключение

1. IBExpert использует FIB+, а не IBX.
2. Они изрядно модифицированы его автором для поддержки новых фич Firebird.


Про 1 в курсе, думал, может не в этом дело
...
Рейтинг: 0 / 0
12.01.2022, 16:44
    #40126048
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert работает в IBX нет
antox
YuRock


Я бы замен л эту конструкцию на такую:
Код: sql
1.
where (:param1 is null or field1 like :param1)



Так короче, нагляднее и работать будет быстрее.


Не могу понять логику такой конструкции - :param1 is null исключает параметр из фильтрации?

Если условие :param1 is null выполнится, то условие field1 like :param1 будет уже не важно (подозреваю, что оптимизатор даже проверять его не будет - вначале проверит константное условие, и если этого достаточно, то всё).
...
Рейтинг: 0 / 0
12.01.2022, 16:46
    #40126053
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert работает в IBX нет
antox
Код: pascal
1.
'Unknown SQL Data type (32766)'


Какой тип параметра?
...
Рейтинг: 0 / 0
12.01.2022, 16:47
    #40126054
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert работает в IBX нет
YuRock
подозреваю, что оптимизатор даже проверять его не будет - вначале проверит константное условие, и если этого достаточно, то всё
А может, даже, и вообще условие выкинет, если оно всегда TRUE, но это я не знаю, догадки, и код ФБ в этом месте я не смотрел.
...
Рейтинг: 0 / 0
12.01.2022, 16:54
    #40126060
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IBExpert работает в IBX нет
wadmanКакой тип параметра?

Код: plaintext
1.
#define SQL_NULL                         32766


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / IBExpert работает в IBX нет / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]