powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2 LUW select into в триггере
9 сообщений из 9, страница 1 из 1
DB2 LUW select into в триггере
    #36273749
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, столкнулся с такия явлением - триггер с select into не компиллируется.
Заменяю на set и всё становится нормально.

Почему?

Примерчик привёл ниже.

Заранее спасибо за ответ.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create trigger tempdb.trg_ins after  insert on tempdb.test_trg 
--Работает
REFERENCING NEW AS NEWROW
FOR EACH ROW        MODE DB2SQL
begin atomic
    declare v_i int;
    set v_i = (select sum(i) from tempdb.test_trg);
end
--Не работает
create trigger tempdb.trg_ins1 after  insert on tempdb.test_trg 
REFERENCING NEW AS NEWROW
FOR EACH ROW        MODE DB2SQL
begin atomic
    declare v_i int;
    select sum(i) into v_i  from tempdb.test_trg;
end
...
Рейтинг: 0 / 0
DB2 LUW select into в триггере
    #36273860
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня к ibm-ерам подобных вопросов была куча. В данном случае очевидно, что триггер и хранимую процедуру разбирают разные парсеры.

Но почему всё же сделано так, как сделано? Я думаю, это банальная бага, до которой никому (из разработчиков) нет дела, или стоит самой последней в списке. "Ну что вам стоит запомнить, что в SP select into работает, а в триггере нет? На скорость и стабильность не влияет, верно?".
...
Рейтинг: 0 / 0
DB2 LUW select into в триггере
    #36273871
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, этой баге (клоп женского пола) был придан официальный статус, т.е. это поведение документировано, в синтаксисе триггеров ничего не говорилось о возможности select into, но по мне, это бага всё равно. Но надо посмотреть 9.7, не изменилось ли чего.
...
Рейтинг: 0 / 0
DB2 LUW select into в триггере
    #36274140
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT INTO придумано для статики, только там оно и работает.
Единственным преимуществом его, как мне кажется, перед SET было (до 9.7) то, что там можно было isolation clause использовать.
...
Рейтинг: 0 / 0
DB2 LUW select into в триггере
    #36275255
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,
всем большое спасибо.

Марк, а что значит
Mark BarinsteinSELECT INTO придумано для статики, только там оно и работает...
...
Рейтинг: 0 / 0
DB2 LUW select into в триггере
    #36275279
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KruМарк, а что значит
Mark BarinsteinSELECT INTO придумано для статики, только там оно и работает...SELECT INTO может быть использовано только в статическом SQL.
В триггерах и функциях используется dynamic compound SQL, т.е. не статический.
...
Рейтинг: 0 / 0
DB2 LUW select into в триггере
    #36275373
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinKruМарк, а что значит
Mark BarinsteinSELECT INTO придумано для статики, только там оно и работает...SELECT INTO может быть использовано только в статическом SQL.
В триггерах и функциях используется dynamic compound SQL, т.е. не статический.

Понял,
огромное спасибо
...
Рейтинг: 0 / 0
DB2 LUW select into в триггере
    #36277273
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Принципиальной разницы между SET и SELECT ... INTO нет, и то, что в разных местах сделано по-разному, это, по-моему нескромному мнению, дефект.
...
Рейтинг: 0 / 0
DB2 LUW select into в триггере
    #36277473
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor Metelitsa... и то, что в разных местах сделано по-разному, это, по-моему нескромному мнению, дефект.Дефект это то, что inline SQL PL (который в функциях и триггерах) является подмножеством SQL PL (который в процедурах)?
Ну, может быть, конечно...
Наверное, поэтому в 9.7 ввели compiled compound SQL :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2 LUW select into в триггере
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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