Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
28.02.2017, 14:24
|
|||
---|---|---|---|
Вопрос по execute statement |
|||
#18+
Привет всем. FB 2.5.6 Создадим простую табличку: Код: sql 1. 2. 3.
Следующий запрос вернет 0: Код: sql 1. 2. 3.
Обернем запрос в execute block: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
При выполнении получаем ошибку: Код: powershell 1. 2. 3. 4.
Но достаточно преобразовать тип через cast, так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Или так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
запрос выполняется без ошибок Это так и должно быть? С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2017, 14:37
|
|||
---|---|---|---|
Вопрос по execute statement |
|||
#18+
Polesov, конечно! В изначальном варианте, подготовленный запрос имеет параметр типа CHAR(4), а передается строка из пяти символов. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2017, 15:13
|
|||
---|---|---|---|
Вопрос по execute statement |
|||
#18+
rdb_dev, Изменим запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
В качестве параметра передадим строку 12345 - получаем ошибку: Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2017, 15:17
|
|||
---|---|---|---|
Вопрос по execute statement |
|||
#18+
PolesovЭто так и должно быть?Встречный вопрос - при чём тут EXEC BLOCK ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2017, 15:21
|
|||
---|---|---|---|
|
|||
Вопрос по execute statement |
|||
#18+
Polesov, это давно известный факт. Firebird определяет типы и размеры параметров запроса на этапе prepare. Для типов CHAR и VARCHAR это может нести некоторые проблемы, например как описана у тебя. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2017, 15:24
|
|||
---|---|---|---|
Вопрос по execute statement |
|||
#18+
hvlad, Надо проверить, есть ли в таблице записи, в которых значение поля содержит определенное значение. Имя таблицы и имя поля передаются в качестве параметров. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2017, 15:25
|
|||
---|---|---|---|
Вопрос по execute statement |
|||
#18+
Симонов ДенисPolesov, это давно известный факт. Firebird определяет типы и размеры параметров запроса на этапе prepare. Для типов CHAR и VARCHAR это может нести некоторые проблемы, например как описана у тебя. Но та же ошибка возникает, если описать тип входного параметра: Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2017, 15:30
|
|||
---|---|---|---|
|
|||
Вопрос по execute statement |
|||
#18+
Polesov, считай что когда ты выполняешь запрос в EXECUTE STATEMENT, ты выполняешь его через клиента. Грубо говоря EXECUTE STAEMENT сам контролирует типы параметров внутреннего запроса. Внешний блок на его типы повлиять не может. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2017, 15:33
|
|||
---|---|---|---|
Вопрос по execute statement |
|||
#18+
Polesov, при чём тут то, что тебе надо ? :) Напиши свой запрос с параметром в IBE, попробуй засунуть в пар-р больше символов, чем в поле. И снова ответь мне - при чём тут EXEC BLOCK ? PS Тип параметра запроса выводится движком из текста запроса. Тип параметра, передаваемый вызывающим кодом (приложением, EXEC BLOCK'ом, чёртом лысым) - не обязан совпадать, но должен быть совместим. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2017, 15:35
|
|||
---|---|---|---|
Вопрос по execute statement |
|||
#18+
Симонов Денис, понятно. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2017, 15:40
|
|||
---|---|---|---|
Вопрос по execute statement |
|||
#18+
hvladТип параметра, передаваемый вызывающим кодом (приложением, EXEC BLOCK'ом, чёртом лысым) - не обязан совпадать, но должен быть совместим. Понятно, получается execute block не при чем. Тогда как сервер разруливает превышение длины поля значением параметра, переданного литерально? Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2017, 15:45
|
|||
---|---|---|---|
|
|||
Вопрос по execute statement |
|||
#18+
Polesov, ну чего тут не понятного? Когда ты в запросе используешь литерал строки никаких параметров нет. возьмём запрос Код: sql 1. 2. 3.
сколько сервер должен выделить места под параметр S? Заметь ты никакого значения в параметр ещё не передал только prepare сделал. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2017, 15:56
|
|||
---|---|---|---|
Вопрос по execute statement |
|||
#18+
PolesovТогда как сервер разруливает превышение длины поля значением параметра, переданного литерально? Код: sql 1. 2. 3.
Здесь нет параметра и "разруливать" нечего ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2017, 15:58
|
|||
---|---|---|---|
Вопрос по execute statement |
|||
#18+
Симонов Денис, hvlad, спасибо за разъяснения. Тему можно считать закрытой. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.02.2017, 16:53
|
|||
---|---|---|---|
Вопрос по execute statement |
|||
#18+
Polesovrdb_dev, Изменим запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
В качестве параметра передадим строку 12345 - получаем ошибку: Код: plaintext 1. 2. 3. 4.
Запрос в EXECUTE STATEMENT как хотел CHAR(4), так по прежнему и хочет, а ты толкаешь ему какой-то VARCHAR(16), тогда как в мануале чёрным по белому написано, что EXECUTE STATEMENT не проверяет тип передающихся параметров, а ошибкой в тебя плюётся именно SELECT внутри EXECUTE STATEMENT. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.03.2017, 06:28
|
|||
---|---|---|---|
Вопрос по execute statement |
|||
#18+
hvladPolesovТогда как сервер разруливает превышение длины поля значением параметра, переданного литерально? Код: sql 1. 2. 3.
Здесь нет параметра и "разруливать" нечего Попутно у меня вопрос. Почему сервер проглатывает без ошибки такие, не влезающие в длину поля, значения? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.03.2017, 06:58
|
|||
---|---|---|---|
|
|||
Вопрос по execute statement |
|||
#18+
Exteris, ребята вы чего издеваетесь? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=40&mobile=1&tid=1561690]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
113ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 366ms |
total: | 574ms |
0 / 0 |