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?
Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!
Bookmarks