Trong trường hợp này, bạn nên sử dụng câu lệnh MERGE như sau:
DECLARE
l_date DATE:=TO_DATE('01/04/2017','DD/MM/YYYY');
BEGIN
LOOP
EXECUTE IMMEDIATE 'MERGE INTO EMPSHIFT E
USING SCHEDULEEMPLOYEES S
ON (S.EMPLOYEEID=E.EMPLOYEEID AND S.DAYDATE=TO_DATE('''||TO_CHAR(l_date)||''',''DD/MM/YYYY''))
WHEN MATCHED
THEN UPDATE SET E."'||TO_CHAR(l_date)||'"=S.SHIFT';
l_date:=l_date+1;
EXIT
WHEN l_date>TO_DATE('30/04/2017','DD/MM/YYYY');
END LOOP;
END;
Bạn đã đề cập rằng bạn muốn cập nhật bản ghi, nhưng nếu bạn muốn chèn các bản ghi bị thiếu (đối với EMPLOYEEID bị thiếu trong bảng EMPSHIFT), vui lòng tham khảo merge_insert_clause