Кажется, что вы пытаетесь выполнить анонимный блок PL / SQL, но закрыли блок на ближайшее время.Т.е. первый END
, вы, вероятно, намеревались просто закрыть блок «try-catch», фактически закрыл все это.
Возможно, вас смутил DECLARE
, который запускает анонимный блок, но это не начало блока кода - вам все равно нужно BEGIN
.
Попробуйте что-то вроде этого:
DECLARE
v_lname VARCHAR(20);
v_id NUMBER(3);
BEGIN
BEGIN
SELECT s.last_name
INTO v_lname
FROM enrollment e, student s
WHERE e.student_id = s.student_id
AND LENGTH(s.last_name) < 9
GROUP BY s.last_name
HAVING COUNT(*) = ( SELECT MAX(count(student_id))
FROM enrollment
GROUP BY student_id);
EXCEPTION
WHEN TOO_MANY_ROWS THEN
v_lname := 'Multiple Names';
END;
INSERT INTO Lab1_tab //ERROR
VALUES(LAB1_SEQ.NEXTVAL, v_lname);
BEGIN
SELECT s.last_name
INTO v_lname
FROM enrollment e, student s
WHERE e.student_id = s.student_id
AND LENGTH(s.last_name) < 9
GROUP BY s.last_name
having count(*) = ( SELECT MIN(count(student_id))
FROM enrollment
GROUP BY student_id);
EXCEPTION
WHEN TOO_MANY_ROWS THEN
v_lname := 'Multiple Names';
END;
INSERT INTO Lab1_tab
VALUES (LAB1_SEQ.NEXTVAL, v_lname);
BEGIN
SELECT i.last_name
INTO v_lname
FROM instructor i, section s
WHERE s.instructor_id = i.instructor_id
AND i.last_name NOT LIKE '%s'
GROUP BY i.last_name
having count(*) = ( SELECT MIN(count(*))
FROM section
GROUP BY instructor_id );
EXCEPTION
WHEN TOO_MANY_ROWS THEN
v_lname := 'Multiple Names';
END;
INSERT INTO Lab1_tab
VALUES (1, v_lname);
BEGIN
SELECT i.last_name
INTO v_lname
FROM instructor i, section s
WHERE s.instructor_id = i.instructor_id
AND i.last_name NOT LIKE '%s'
GROUP BY i.last_name
having count(*) = ( SELECT MAX(count(*))
FROM section
GROUP BY instructor_id );
EXCEPTION
WHEN TOO_MANY_ROWS THEN
v_lname := 'Multiple Names';
END;
INSERT INTO Lab1_tab
VALUES (LAB1_SEQ.NEXTVAL, v_lname);
END;
/
Редактировать :
В общем, если вы сомневаетесь, сосчитайте ваши BEGIN
s и END
s и посмотрите, совпадают ли числа.:)