Firstly, & is the variable prefix in sqlplus/sqldeveloper, hence the problem - when it appears, it is expected to be part of a variable name.
SET DEFINE OFF will stop sqlplus interpreting & this way.
But what if you need to use sqlplus variables and literal & characters?
You need SET DEFINE ON to make variables work And SET ESCAPE ON to escape uses of &.
From: https://stackoverflow.com/questions/152837/how-to-insert-a-string-which-contains-an
SET DEFINE OFF