|
#1
|
|||
|
|||
Любопытный баг
Как говориться найдите 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, имеем стабильно ошибку на третьем шаге. Способ Б в тех же условиях работает отлично. Если кто сможет пролить свет на эту ситуацию, буду благодарен. |