Как говориться найдите 10 отличий:
А:
Код:
vi = randomid();
vcodeib = '';
select wc.code from warecodes wc
where wc.id = (select min(wc2.id) from warecodes wc2 where wc2.id >= :vi)
into :vcodeib;
if (vcodeib = '') then
begin
select wc.code from warecodes wc
where wc.id = (select max(wc2.id) from warecodes wc2 where wc2.id < :vi)
into :vcodeib;
end
delete from warecodes wc where wc.code = :vcodeib;
Б:
Код:
vi = randomid();
vcodeib = '';
select min(wc2.id) from warecodes wc2 where wc2.id >= :vi
into :vi2
select wc.code from warecodes wc
where wc.id = :vi2
into :vcodeib;
if (vcodeib = '') then
begin
select max(wc2.id) from warecodes wc2 where wc2.id < :vi
into :vi2
select wc.code from warecodes wc
where wc.id = :vi2
into :vcodeib;
end
delete from warecodes wc where wc.code = :vcodeib;
Используя способ А в цикле for select, имеем стабильно ошибку на третьем шаге. Способ Б в тех же условиях работает отлично.
Если кто сможет пролить свет на эту ситуацию, буду благодарен.