Эта ошибка, ORA-00911: недопустимый символ не имеет ничего общего с вашим оператором обновления и может исходить из другой части вашего PL / SQL?
Что на самом деле не так с вашим заявлением об обновлении, так это то, что вы не можете обновить более одной таблицы через встроенное представление. Итак, если вы удалите псевдоним l
в предложении set
и запустите оператор, вы должны получить ORA-01776: невозможно изменить более одной базовой таблицы через представление объединения
Однако вы можете сделать это, используя INSTEAD OF TRIGGER
с view
.
В вашем случае, поскольку вы обновляете таблицы на основе заданного первичного ключа (location_id = 1200
), выполнение этих двух простых обновлений должно быть в порядке. Нет необходимости в соединениях
UPDATE hr.locations
SET street_address = '147 Spadina Ave',
postal_code = '122000215',
city = 'Toronto',
state_province = 'Ontario'
WHERE location_id = 1200;
UPDATE hr.countries
SET country_name = 'US' -- Toronto in United states, how did that happen?
WHERE country_id IN ( SELECT country_id
FROM hr.locations
WHERE location_id = 1200
);