다음과 같은 세 가지 해결 방법이 있다.



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번 적어 주면 된다.

반응형

'DB > ORACLE' 카테고리의 다른 글

ora-00257:archiver error. Connect internal only, until freed  (0) 2015.03.09
오라클 clob입력 설정  (0) 2015.03.09
테이블 컬럼 정보 select문  (0) 2015.03.09
ORA-01659  (0) 2015.03.09
ORA-01033: ORACLE initialization or shutdown in progress  (0) 2015.03.05
Posted by 질주하는구
,