日期:2014-05-17  浏览次数:20764 次

【求助】求这条SQL语句怎么写
表里面有三个字段,分别是 name (varchar2) ,startTime(Date),endTime(Date),分别表示的是“组织者名称”,“开始时间”,“结束时间”。表里面有很多数据。

现在传入这3个参数,要判断新传入的“开始时间”和“结束时间”这个时间段跟以前的时间段有没有时间重叠的地方,如果有,把对应的“组织者”找出来,跟新传入的组织者对比,判断是否是同一个人。
实际上就是判断在同一时间内组织者是否有冲突的问题。
可以是SQL语句或者存储过程,不要程序包。

大虾们,帮帮忙``在线等

------解决方案--------------------
DECLARE
lv_name VARCHAR2(80) := NAME; --传入的组织者名称
sTime DATE := startTime; --传入的开始日期
eTime DATE := endTime; --传入的结束日期
lv_name2 VARCHAR2(80); --可能存在交叉的组织者名称
BEGIN
BEGIN
SELECT NAME
INTO lv_name2
FROM tb_name a
WHERE a.startTime <= eTime AND a.endTime >= sTime;

IF lv_name2 = lv_name THEN
dbms_output.put('组织者名称:' || lv_name2);
END IF;
EXCEPTION
WHEN no_data_found THEN
dbms_output.put('不存在有交叉的组织者名称');
END IF;

END;