***背景:***我有表格:
**TUTPRAC:**CLASSID,UNITCODE,STAFFNO,CLASSDAY,CLASSTIME,CLASSTYPE,ROOMNUM
**UNITSTREAM:**STREAM、UNITCODE、STAFFNO、DAY、TIME、LOCATION
***问题:***所以我有一个数据库和表,我试图创建一个函数,在打开一个新的类之前检查一个类是否打开,这个过程必须确保流(讲座),tute会话和prac类之间没有任何重叠(在时间-天或位置方面的冲突)。TUTPRACS包含教程和实践的记录,而UNITSTREAM包含流(讲座)的记录。
我还希望该过程也引发一个名为CLASS_OVERLAPS的异常,该异常在发生冲突时打印一条警报消息。
我是PL/SQL新手,所以任何帮助都将不胜感激。
CREATE OR REPLACE PROCEDURE OPEN_CLASS(
p_class IN TUTPRAC.CLASSID%TYPE,
p_unitc IN TUTPRAC.UNITCODE%TYPE,
p_classd IN TUTPRAC.CLASS_DAY%TYPE,
p_classt IN TUTPRAC.CLASS_TIME%TYPE,
p_classtp IN TUTPRAC.CLASS_TYPE%TYPE,
p_roomnm IN TUTPRAC.ROOMNUM%TYPE)
IS
BEGIN
INSERT INTO TUTPRAC ("CLASSID", "UNITCODE", "CLASS_DAY", "CLASS_TIME", "CLASS_TYPE", "ROOMNUM")
VALUES (p_class, p_unitc, p_classd, p_classt, p_classtp, p_roomnm);
COMMIT;
END;
3条答案
按热度按时间7vhp5slm1#
你可以这样尝试:
或者你可以像这样使用EXISTS:
btxsgosb2#
你知道合并吗?合并
gdrx4gfi3#
保持简单
这里有一个更简单的方法: