【发布时间】:2014-12-12 15:31:02
【问题描述】:
所以我在处理一些 PL SQL 语句时遇到了一些麻烦。本质上,我正在尝试创建一个程序,该程序将检查当插入新元组时,该程序会检查同一日期内没有同一个人的另一份合同,即。新合同的日期不与另一个日期重叠。
代码如下:
CREATE OR REPLACE PROCEDURE dateOrder
(name IN VARCHAR2, start IN DATE, end IN DATE)
IS
x number;
y number;
BEGIN
CREATE OR REPLACE VIEW PersonContracts AS
SELECT * FROM ContractInfo WHERE HasContract=name;
SELECT COUNT(*) INTO x FROM PersonContracts
WHERE start BETWEEN date_from AND date_to;
SELECT COUNT(*) INTO y from PersonContracts
WHERE end BETWEEN date_from AND date_to;
IF x > 0 THEN
dbms_output.put_line("overlaps.");
END IF;
IF Y > 0 THEN
dbms_output.put_line("overlaps.");
END IF;
END dateOrder;
/
BEGIN
dateOrder("John Smith", "08-oct-2014", "12-oct-2014");
END;
我在有或没有视图的情况下都尝试过,但如果可能的话,我更愿意保留视图。我只是 PL 的新手!
【问题讨论】:
标签: sql oracle plsql procedure