Khi bạn có BEGIN, END, v.v., bạn đang ở PL / SQL, không phải SQL.
Một khối PL / SQL cần được kết thúc bằng một dấu gạch chéo ("chuyển tiếp") ở đầu dòng. Điều này cho Oracle biết rằng bạn đã hoàn tất với khối PL / SQL của mình, vì vậy nó sẽ biên dịch khối văn bản đó.
Truy vấn SQL - kết thúc bằng dấu chấm phẩy:
update orders set status = 'COMPLETE' where order_id = 55255;
Khối PL / SQL - các lệnh phân tách bằng dấu chấm phẩy, khối được kết thúc bằng dấu gạch chéo lên:
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;
/