Quando hai BEGIN, END, ecc. sei in PL/SQL, non in SQL.
Un blocco PL/SQL deve essere terminato con una singola barra ("avanti") all'inizio della riga. Questo dice a Oracle che hai finito con il tuo blocco PL/SQL, quindi compila quel blocco di testo.
Query SQL - terminata da punto e virgola:
update orders set status = 'COMPLETE' where order_id = 55255;
Blocco PL/SQL - comandi separati da punto e virgola, il blocco viene terminato da una barra:
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;
/