The following seems to be a bug. The execution returns rows 1,2. It
should return 1,1. In fact, if I run the code within a stored procedure
alone (not in a trigger), the loop doesn't overwrite the value of y
(works well).
create table test (a integer)
@
create table debug1 (a integer)
@
create trigger test_1 after insert on test referencing new as ins for
each row mode db2sql
begin atomic
declare x smallint;
declare y smallint;
set y = ins.a;
for loop as
select y from sysibm.sysdummy 1
union
select 2 as y from sysibm.sysdummy 1
do
set x = loop.y;
insert into debug1 values (y);
end for;
end
@
insert into test values (1)
@
select * from debug1
@
drop trigger test_1
@
drop table test
@
drop table debug1
@
A
-----------
1
2 --> WRONG!
Thank you
(Serge, are you there?) :))
should return 1,1. In fact, if I run the code within a stored procedure
alone (not in a trigger), the loop doesn't overwrite the value of y
(works well).
create table test (a integer)
@
create table debug1 (a integer)
@
create trigger test_1 after insert on test referencing new as ins for
each row mode db2sql
begin atomic
declare x smallint;
declare y smallint;
set y = ins.a;
for loop as
select y from sysibm.sysdummy 1
union
select 2 as y from sysibm.sysdummy 1
do
set x = loop.y;
insert into debug1 values (y);
end for;
end
@
insert into test values (1)
@
select * from debug1
@
drop trigger test_1
@
drop table test
@
drop table debug1
@
A
-----------
1
2 --> WRONG!
Thank you
(Serge, are you there?) :))
Comment