What is wrong with this sql statement?
ORA-06550: line 1, column 9: PLS-00103: Encountered the symbol "01" when expecting one of the following: begin function pragma procedure subtype type current cursor delete exists prior ORA-06
DECLARE &BEGINDATE DATE;
&ENDDATE DATE;
BEGIN
SELECT MAX(CONTRACTOR_CONTRACTS.CONTRACT_CODE) AS CONTRACT_CODE, MAX(STUDENTS.STUDENT_ID) AS STUDENT_ID, MAX(STUDENTS.UPPER_FIRST_NAME) AS UPPER_FIRST_NAME, MAX(STUDENTS.UPPER_LAST_NAME) AS UPPER_LAST_NAME, MAX(STUDENTS.SSN) AS SSN, MAX(HOURS_WORKED) AS HOURS_WORKED, MAX(HOURLY_RATE) AS HOURLY_RATE, MAX(MAX_HOURS_PER_STUDENT) AS MAX_HOURS_PER_STUDENT, MAX(MAX_HOURS_PER_STUDENT) -MAX(HOURS_WORKED) AS HOURS_REMAINING, MAX(INCENTIVE_AMOUNT) AS INCENTIVE_AMOUNT FROM STUDENTS
INNER JOIN STUDENT_JOBS ON STUDENT_JOBS.STUDENT_ID = STUDENTS.STUDENT_ID
INNER JOIN JOBS ON STUDENT_JOBS.JOB_ID = JOBS.JOB_ID
INNER JOIN WORKSITES ON JOBS.WORKSITE_ID = WORKSITES.WORKSITE_ID
INNER JOIN CONTRACTORS ON JOBS.CONTRACTOR_ID = CONTRACTORS.CONTRACTOR_ID
INNER JOIN CONTRACTOR_CONTRACTS ON CONTRACTOR_CONTRACTS.CONTRACTOR_ID = CONTRACTORS.CONTRACTOR_ID
INNER JOIN
(SELECT STUDENT_JOB_TIMESHEETS.STUDENT_JOB_ID, SUM(HOURS_WORKED) AS HOURS_WORKED, AVG(HOURLY_RATE) AS HOURLY_RATE, SUM(INCENTIVE_AMOUNT) AS INCENTIVE_AMOUNT FROM STUDENT_JOB_TIMESHEETS
GROUP BY STUDENT_JOB_TIMESHEETS.STUDENT_JOB_ID) SUBSET ON STUDENT_JOBS.STUDENT_JOB_ID = SUBSET.STUDENT_JOB_ID
WHERE CONTRACTOR_CONTRACTS.CONTRACT_CODE IN('E100','E101','E102','E104','E105') AND CONTRACTOR_CONTRACTS.BEGIN_DATE >= &BEGINDATE AND CONTRACTOR_CONTRACTS.END_DATE <= &ENDDATE
GROUP BY CONTRACTOR_CONTRACTS.CONTRACT_CODE, STUDENTS.STUDENT_ID;
END;