Wenn ich den SQLSTATE mit SIGNAL zurückgeben, dann hab ich das im Joblog stehen, aber eben nicht beim GET DIAGNOSTICS.
Was mach ich da noch falsch??

p1: begin


declare v_message_text varchar(128) default '';
declare v_sqlCode integer default 0;
declare v_sqlState char(5) default '00000';


declare exit handler for sqlexception
begin
get diagnostics exception 1 v_message_text = message_text,
v_sqlCode = db2_returned_sqlcode,
v_sqlState = returned_sqlstate;
rollback;
signal sqlstate v_sqlState set message_text = v_message_text;
end;


delete from table
where sonderartikel = 0;


insert into table
select felder from view


end p1;

Im RPG mach ich:

exec sql
call arupd();

exec sql
get diagnostics condition 1
:state = returned_sqlstate,
:code = db2_returned_sqlcode,
:msg = message_text;

In msg steht "Anweisung CALL beendet", state = '00000' und code = 0.

Im Joblog steht:

Doppelter Schlüsselwert angegeben.
Nachricht Doppelter Schlüsselwert angegeben. wurde von SIGNAL, RESIGNAL
oder RAISE_ERROR zurückgegeben.

PS.: Wie fügt man denn hier so ein schönes Codefensterchen ein?