다음과 같은 세 가지 해결 방법이 있다.
1> SQL*Plus에서 SET DEFINE OFF나 SET SCAN OFF를 실행하여
substitution variable(&)을 turn off시킨다.
(Example)
sql> SET DEFINE OFF
sql> INSERT INTO table_name VALUES('AT&T');
/
1 row created
2> SET DEFINE ON 상태로 유지시키면서 substitution variable을
다른 non-alphanumeric 문자나 non-white space 문자(*, % 등등)로 대체시킨다.
(Example)
sql> SET DEFINE %
sql> INSERT INTO table_name VALUES('AT&T');
/
1 row created
3> SET ESCAPE ON 상태에서(DEFINE은 &로, SCAN은 ON 상태로 유지)
특수 문자 앞에 escape 문자인 backslash('\')를 붙인다.
(Example)
sql> SET ESCAPE ON
sql> SHOW ESCAPE
ESCAPE "\" (hex 5c)
sql> INSERT INTO table_name VALUES ('select * from emp
where ename=\&1');
1 row created.
sql> select * from table_name;
COL1
---------------------------------------------------------
SELECT * FROM EMP WHERE ENAME=&1
'을 문자 사이에 입력 하고 싶다면 ''와 같이 '를 2번 적어 주면 된다.