В строке 7 вы указываете dname
как переменную, но переменная с таким именем отсутствует.Мое первое предположение состояло в том, что вы имели в виду d_name
, второй параметр функции, но это не имеет смысла, поскольку вы бы тогда пропустили обновление, если два значения не будут равны.
На основена том, что вы делаете в обработчике исключений, я предполагаю, что if
- это попытка проверить, существуют ли строки для обновления, а dname
- это попытка сослаться на фактический столбец в таблице.Но вы не можете просто ссылаться на столбцы таблицы в середине кода PL / SQL - как компилятор должен понимать эту ссылку?
Кроме того, лучший способ проверить, повлияет ли обновление на какое-либостроки, чтобы сделать это и проверить результат.
create or replace procedure UPD_DEP
(dd_name in dept.dname%type, --department which has to be updated
d_name in dept.dname%type) --name to which the first parameter has to be updated
is
begin
update dept
set dname=d_name
where dname=dd_name;
if SQL%FOUND then
commit;
else
dbms_output.put_line('department not present which u want to be updated');
end if;
end upd_dep;