Ваш обработчик продолжения работает ...
Ваша процедура игнорирует ошибку, выданную оператором UPDATE
, и продолжает работу. За исключением того, что больше ничего не нужно делать.
То, что ваш профессионал c игнорирует ошибку, не означает, что БД может игнорировать ошибку внутри обработки оператора обновления.
* Обработчики 1007 *
EDIT изменяют способ обработки ошибок хранимой процедурой или UDF ... воспринимают их как способ "отловить" ошибки, выдаваемые БД. Они не мешают БД генерировать эти ошибки в первую очередь Имеет смысл?
Для того, чтобы делать то, что вы пытаетесь сделать, вы ' мне нужно использовать собственный курсор, что-то вроде этого ...
create or replace procedure test_prod1
(in test2 decimal(1,0))
language sql modifies sql data
begin
declare myInt integer;
DECLARE DUPLICATE_KEY CONDITION FOR SQLSTATE '23505';
DECLARE END_OF_TABLE CONDITION FOR SQLSTATE '02000';
declare test_cursor cursor for
select int2 from DUPEPP for update;
declare exit handler for END_OF_TABLE
close test_cursor;
declare continue handler for DUPLICATE_KEY
begin end;
open test_cursor;
fetch_loop:
LOOP
fetch next from test_cursor into myInt;
update dupepf set int2 = test2
where current of test_cursor;
END LOOP fetch_loop;
end;