Когда у вас BEGIN, END и т. Д., Вы находитесь в PL / SQL, а не в SQL.
Блок PL / SQL должен заканчиваться одиночной ("прямой") косой чертой в самом началелиния.Это говорит Oracle, что вы закончили с вашим блоком PL / SQL, поэтому он компилирует этот блок текста.
SQL-запрос - завершается точкой с запятой:
update orders set status = 'COMPLETE' where order_id = 55255;
PL / SQL block - команды разделяется точкой с запятой, блок завершается косой чертой:
create or replace procedure mark_order_complete (completed_order_id in number)
is
begin
update orders set status = 'COMPLETE' where order_id = :completed_order_id;
end mark_order_complete;
/