그래서 일부 PL SQL 문에 약간 문제가 있습니다. 본질적으로 나는 새로운 튜플이 삽입 될 때 프로 시저가 동일한 날짜에 동일한 사람에 대해 다른 계약이 없다는 것을 검사하는 프로 시저를 만들려고합니다. 새 계약의 날짜는 다른 계약의 날짜와 겹치지 않습니다. 여기 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에서만 새롭다!
내 의견으로는, 이것은 더 나은 해결책입니다. 일반적으로 절차 코드에서 데이터베이스 개체를 다시 정의하는 것은 좋지 않습니다. – Allan
그래, 고마워! 보기는 그렇게 중요하지 않았습니다! 그냥 AND를 WHERE에 추가하면 나에게 동일한 효과가 나타납니다. –