whenever you are using any command, please check, whether it is valid for the language of current code. It is stated in Oracle documentation book, available e.g. online on http://tahiti.oracle.com/
ACCEPT is sqlplus (client tool) command
BEGIN END; is part of PL/SQL language, it cannot interpret sqlplus commands. The main (logical) reason is, that it runs on database side and does not care from where it is called. Can you imagine, how should that ACCEPT behave if called e.g. from JDBC?
By the way, LIKE is valid operator in PL/SQL too - you do not need to call SQL query for this. On the other hand, SELECT cannot be called like this in PL/SQL - it requires INTO clause. What are you trying to achieve?
[Edit: finished the incomplete sentence in second paragraph]