Please Enable JavaScript!
Gon[ Enable JavaScript ]

반응형

oracle 특수문자 입력시 Substitution Variable 변수치환을 없애는 방법

 

개발환경 : Toad 9.7.2.2 , Oracle 11g, Window 7 32bit

 

먼저 Substitution Variable 이 무엇인지 알아보자. 이것은 변수치환, 그러니까

쿼리에서 문자가 아닌 & 특수문자 뒤에 붙은 단어가 변수로 작용한다는

말이다. 변수는 다른 값을 받아들일 준비를 한다는 말이며 쿼리를 실행하고

그 변수값을 넣어줘야 제대로 실행이 된다.

이 기능을 사용하고 싶지 않을 때가 있을 것이다. 그럴때는 아래와 같이

3가지 방법을 사용해 중시 시키면 & 특수문자를 써도 변수로 인식하지 않는다.

 

(1)  define 정보 off 시키기

 

& 특수문자가 입력 쿼리에 붙게 되면 그걸 변수로 인식하게 된다.

토드에서 INSERT, UPDATE 를 하게 되면 아래 그림과 같이 변수에 값을 입력하라는

창이 뜨게 된다.

 

그리고 그에 해당하는 쿼리문에 대한 내용이다. URL 주소를 입력하는 부분에서

& 특수문자가 들어간걸 알수있다. & 뒤부터 act 까지 변수로 인식한 것이다.

먼저 해당 계정으로 들어가야 된다. sys 계정으로 들어가서 설정한다고 해도

계정이 전부 적용이 되는 것이 아니기 때문에 사용하는 계정으로 들어가서

설정을 해야한다.

이 쿼리를 수행하면 에러가 나므로 그냥 & 를 일반 문자로 인식하게 해줄

필요가 있다. 그럴려면 일단 Oracle 에서 특수문자 define 정보가 어떻게 되어있는

알 필요가 있다. SQL > show define ; 명령어를 실행해 본다.

hex 26 으로 지정된걸 볼수 있는데 이것을 OFF 시켜주자.

명령어는 간단하다. set define off 혹은 set scan off 명령을 실행하여

Substitution Variable기능을 중단시킨다.

 

(2) Substitution Variable 다른 문자로 셋팅한다.

 

이것은 별로 추천하고 싶지 않은 방법이다. 그 다른 특수문자도 사용이 될수도 있기 때문이다.

명령어는 간단하다. SQL > set define $ ; 실행하면 $ Substitution Variable 문자가 된다.

 

(3)  escape 를 붙여서 특수기능이 아닌 일반 문자로 인식하게 한다.

 

escape 기능이 on 되어있는지 확인한다. SQL > show escape; 로 확인할수 있다.

이것이 안되어있으면 on 을 시켜야 한다. 명령어는 다음과 같다. SQL > set escape on;

escape 기능이 설정되었다면 쿼리문에서 & 특수문자 앞에 \ 를 붙이면 된다.

 

 

반응형
Posted by 녹두장군1
,