Гость
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / план для update or insert / 7 сообщений из 7, страница 1 из 1
28.01.2016, 13:53
    #39157459
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
план для update or insert
не выдается план для запроса update or insert.

Например, пишем в SQL Editor

update or insert
into employee (emp_no, first_name, last_name)
values (:e, :f, :l)
matching (first_name, last_name)

жмем кнопку prepare, и ... пусто.

IBE любой версии, 2014, 2015 года, вплоть до самого свежего. Firebird 2.5.
...
Рейтинг: 0 / 0
28.01.2016, 14:22
    #39157508
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
план для update or insert
kdv,

забыл добавить, что ISQL план для такого запроса выдает без проблем.
...
Рейтинг: 0 / 0
28.01.2016, 15:05
    #39157600
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
план для update or insert
Причину, в общем, нашел. Пока не понял, как отличать INSERT от UPDATE OR INSERT - для обоих выдается один и тот же тип статемента (insert). А попытка получить план для обычного INSERT'a ожидаемо приводит к ошибке.
Она, конечно, легко давится, но есть ли более щадящий способ?
...
Рейтинг: 0 / 0
28.01.2016, 15:26
    #39157630
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
план для update or insert
IBExpertкак отличать INSERT от UPDATE OR INSERT - для обоих выдается один и тот же тип статемента (insert).

кто выдаёт? Компоненты доступа?

Может допилить их чтобы был отдельный тип статмента.

Кстати для merge тоже план не даёт.
...
Рейтинг: 0 / 0
28.01.2016, 15:30
    #39157635
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
план для update or insert
Симонов Денискто выдаёт? Компоненты доступа?


Они, понятно. Но они isc_dsql_sql_info дергают, а не текст парсят.

Симонов ДенисКстати для merge тоже план не даёт.

Из той же оперы проблема, скорее всего.
...
Рейтинг: 0 / 0
28.01.2016, 16:19
    #39157684
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
план для update or insert
IBExpertдля обоих выдается один и тот же тип статемента (insert)
Влад сказал, что действительно, update or insert "трактуется" как insert. Тем не менее, isql каким-то образом все-таки план выдает.
Вероятно, вместо игнорирования определенных типов запросов (всего кроме SQLSelect, SQLUpdate, SQLDelete) он в любом случае пытается получить план запроса. А если это выдало ошибку - то просто ничего не выводит (для просто insert isql ничего не выдает).
Я глянул IBX, там начало такое

Код: pascal
1.
2.
3.
4.
5.
 if (not Prepared) or
     (not (FSQLType in [SQLSelect, SQLSelectForUpdate,
       {TODO: SQLExecProcedure, }
       SQLUpdate, SQLDelete])) then
    result := ''


соответственно, SQLInsert автоматически выпадает. Тем не менее, дальше в коде обработка ошибок плана есть.
...
Рейтинг: 0 / 0
28.01.2016, 16:35
    #39157700
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
план для update or insert
kdvВлад сказал, что действительно, update or insert "трактуется" как insert. Тем не менее, isql каким-то образом все-таки план выдает.


Да эксперт тоже уже выдает. Думал, может какой-то другой вариант есть, кроме как давить ошибку.
Получается, только анализировать текст запроса. В принципе, эксперт это умеет, и в SQL редакторе не будет пытаться получить план для простого инсерта. Но может где-то еще всплыть.
...
Рейтинг: 0 / 0
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / план для update or insert / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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