Вы используете неправильный синтаксис для цикла FOR
.Сообщение об ошибке говорит вам, что именно не так.Вместо слова BEGIN
PUT LOOP
.
Как личное правило, я никогда не использую BEGIN
IN PL / SQL с очень немногими исключениями, например, если мне нужно перехватывать исключения только для определенногоблок кода, и этот код уже не является циклом, телом функции или чем-либо еще.
Редактирование на основе редактирования OP: похоже, это один из таких случаев.Попробуйте следующее:
DECLARE
v_vendor_id NUMBER;
BEGIN
FOR vp_rec IN ( SELECT * FROM vpprocess )
LOOP
BEGIN
SELECT i.vendor_id INTO v_vendor_id FROM item i, lineitems l WHERE l.itemid = i.itemid AND l.id = vp_rec.lineitemid;
EXCEPTION
WHEN no_data_found THEN v_vendor_id := 0;
END;
UPDATE vpprocess SET vendorid = v_vendor_id WHERE vpprocessid = vp_rec.vpprocessid;
/* END; has been removed */
END LOOP;
END;