1
--检查插入的时间是否会与已存在的时间交叉2
select nvl(count(1),0)3
into l_exist_time4
from hek_om_pop_validity_all hpva5
where hpva.inventory_item_id = :HEK_OM_POP_VALIDITY_V.INVENTORY_ITEM_ID6
and ((:HEK_OM_POP_VALIDITY_V.START_DATE between hpva.start_date and nvl(hpva.end_date, to_date('9999-12-22','yyyy-mm-dd')))7
or (:HEK_OM_POP_VALIDITY_V.END_DATE between hpva.start_date and nvl(hpva.end_date,to_date('9999-12-22','yyyy-mm-dd')))8
or (hpva.start_date between :HEK_OM_POP_VALIDITY_V.START_DATE and nvl(:HEK_OM_POP_VALIDITY_V.END_DATE,to_date('9999-12-22','yyyy-mm-dd'))));PS. 一行一行相比较。l_exist_time >= 1的时候存在时间交叉。
1
--检查修改的时间是否会与已存在的时间交叉2
select nvl(count(1),0)3
into l_exist_time4
from hek_om_pop_validity_all hpva5
where hpva.inventory_item_id = :HEK_OM_POP_VALIDITY_V.INVENTORY_ITEM_ID6
--不用与自己比较7
and hpva.line_id <> :HEK_OM_POP_VALIDITY_V.LINE_ID8
and ((:HEK_OM_POP_VALIDITY_V.START_DATE between hpva.start_date and nvl(hpva.end_date,to_date('9999-12-22','yyyy-mm-dd')))9
or (:HEK_OM_POP_VALIDITY_V.END_DATE between hpva.start_date and nvl(hpva.end_date,to_date('9999-12-22','yyyy-mm-dd')))10
or (hpva.start_date between :HEK_OM_POP_VALIDITY_V.START_DATE and nvl(:HEK_OM_POP_VALIDITY_V.END_DATE,to_date('9999-12-22','yyyy-mm-dd'))));11

PS. 一行一行进行比较,但要排除本身这一行,然后保证修改的行的起始时间和结束时间都不在其他行。l_exist_time >= 1的时候存在时间交叉。