выдает ошибку, что ORA-00933: команда SQL не завершилась должным образом, что делать?

#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) Учитывая, что вы сохраняете возраст, ваше обновление, как написано, увеличит «возраст» каждой строки. Обычно это не то, что задумано.