#sql #oracle
#sql #Oracle
Вопрос:
select * from student_79;
DECLARE
total_rows number(2);
BEGIN
UPDATE student_10
SET age = age 2;
IF sql%notfound THEN
dbms_output.put_line('no student updated');
ELSIF sql%found THEN
total_rows :=sql%rowcount;
dbms_output.put_line(total_rows || ' student updated ');
END IF;
END;
Комментарии:
1. возможно, ошибка в if else если посмотрите, вы написали elsif, а не elseif
2. Блоки PL / SQL обычно должны заканчиваться символом a
/
в отдельной строке3. Не уверен, но добавьте / перед объявлением .. и один после завершения, т.е. END; / попробуйте.
4. Какой редактор вы используете и как вы выполняете две команды? Они отлично работают для меня в SQL * Plus (за исключением того, что для его
/
запуска требуется после анонимного блока) и в PL / SQL Developer. Это может отличаться в SQL Developer или Toad и т. Д.
Ответ №1:
я проверяю ваш код, он работает, никаких ошибок не возвращается.
Комментарии:
1. Пара замечаний, не связанных с вашей ошибкой. 1) имена ваших таблиц предполагают, что у вас есть несколько идентичных таблиц, которые отличаются только значениями строк / столбцов. Если это так, они должны быть объединены в 1 таблицу. 2) Вы никогда не должны хранить «возраст» чего-либо, так как «возраст» всегда увеличивается. Сохраните дату, с которой всегда можно вычислить возраст. 3) Учитывая, что вы сохраняете возраст, ваше обновление, как написано, увеличит «возраст» каждой строки. Обычно это не то, что задумано.