単純な PL/SQL プロシージャを作成しようとしていますが、理解できないエラーが発生し続けます。構文エラーがいくつかあります。誰かが私を助けてくれれば幸いです。テーブルに特定の人物 (varchar2) を 2 つの日付 (DATE) である契約期間とともに挿入できるようにするプロシージャを作成する必要があります。ただし、彼の契約は既存の日付の間にあることはできません。したがって、重複することはできません。同じ人が複数の連絡先を持つことができますが、完全に異なる期間の間のみです。INTERSECT を使用する必要があることは理解しています。テーブルが 1 つしかないため、ここでの使用方法がわかりません。以前に 2 つのテーブルを交差させたことがありますが、ここで交差させるにはどうすればよいですか? また、2 つの if ステートメントを使用できるかどうかもわかりません。ありがとうございます。
CREATE OR REPLACE PROCEDURE test1
(name VARCHAR2,
startDate DATE,
endDate DATE)
AS
overlap NUMBER := 0;
CURSOR cursor IS
SELECT date_from, date_to FROM contractTable;
BEGIN
FOR row IN cursor LOOP
/*check if there is an overlap between dates*/
IF (startDate, endDate) INTERESECT (SELECT date_from, date_to FROM ContractTable) THEN
overlap := overlap + 1;
END IF;
/*if there isn't, then insert new contact for this person*/
IF overlap <= 0 THEN
INSERT INTO ContractTable VALUES(name, startDate, endDate);
END IF;
END test1;