[ORACLE]SQL*Plus에서 특수문자 INSERT하기 (&)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
◎ 범례
──────────────────────────────────────────────
대문자 : Reserved Word (오라클 예약어)
소문자 : User Define (사용자가 직접 입력해야 하는 부분)
[ ] : Option (지정하지 않아도 되거나 생략시 기본 설정값으로 대체됨)
or : Choice(여러가지중 하나를 선택한다)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
오라클의 SQL*Plus에서는 Substitution Variable을 이용하여 외부에서 값을 입력 할 수 있도록
하고 있다.
그 Default 문자를 & 로 사용하고 있으며 이 &가 사용되면 SQL*Plus는 사용자에게 해당하는 값을 입력하도록 기다리고 있게 된다.
예를 들어
INSERT INTO TEMPTBL (COL1) VALUES ('YOU&I')를 실행 하게되면 SQL*Plus는
Enter value for i: 와 같은 메시지를 나타내며 값을 입력할때 까지 기다리게 된다.
그러나 실제는 'YOU&I'라는 값이 전체적으로 입력 되어져야 하는것과 같이 특수 문자를 INSERT, UPDATE해야 하는 경우가 발생하게 되고 UPDATE, DELETE등의 WHERE절에도 값에 &등 특수
문자가 있다면 오류 또는 원하지 않는 결과를 얻게 된다.
──────────────────────────────────────────────
이러한 문제를 해결하기 위하여 다음의 3가지 방법이 있을 수 있다.
1. Substitution Variable 기능을 중단시킨 후 INSERT, UPDATE, DELETE한다.
SET DEFINE OFF 또는 SET SCAN OFF명령을 실행하여 Substitution Variable기능을
중단 시킨다.
예제)
SQL> set define off
SQL> INSERT ITO TEMPTBL (COL1) VALUES ('YOU&I');
1 row created.
SQL> SELECT * FROM TEMPTBL;
COL1
---------------
YOU&I
2. Substitution Variable를 다른 문자로 지정하여 처리한다.
SET DEFINE을 이용하여 Substitution Variable 문자를 다른 문자로 지정한다.
예제)
SQL> set define #
SQL> INSERT ITO TEMPTBL (COL1) VALUES ('YOU&I');
1 row created.
SQL> SELECT * FROM TEMPTBL;
COL1
---------------
YOU&I
3. ESCAPE 문자를 지정하여 특수문자를 특수 기능이 아닌 문자로 인식하도록 한다.
기본적으로 SQL*Plus는 \(Back Slash) 문자를 ESCAPE문자로 지정되어 있으며
ESCAPE기능은 OFF로 지정되어 있다.
(SHOW ESCAPE 명령을 이용하여 ESCAPE ON/OFF 상테를 알 수 있다
SQL> show escape
escape OFF <---- ESCAPE Mode가 OFF 되어 있다.)
SET ESCAPE ON 명령을 이용하여 ESCAPE문자를 쓸 수 있도록 한다.
SQL> set escape on
SQL> show escape
escape "\" (hex 5c) <---- ESCAPE Mode가 동작중이며 \ 으로 지정되어 있다.
SQL> INSERT ITO TEMPTBL (COL1) VALUES ('YOU\&I');
1 row created.
SQL> SELECT * FROM TEMPTBL;
COL1
---------------
YOU&I
댓글을 달아 주세요
난 그냥 제출하신 이메일 주소로 날 구독하시기 바랍니다. 나는 미래의 게시물에 대한 알림을 수신하고 싶습니다. 좋은 블로그와 좋은 게시합니다.
2011.10.10 12:30 [ ADDR : EDIT/ DEL : REPLY ]이것이 내가 이곳을 방문 처음이다. 나는 특히 토론, 블로그에 많은 흥미로운 물건을 발견했습니다. 기사에 대한 의견의 t에서, 제가 여기있는 모든 즐거움을 가진 유일한 사람이 아니 그런 것 같아요! 훌륭한 작품을 계속. <h1><a href="http://kadalmesir.blogspot.com/2012/08/sepeda-motor-bebek-injeksi-kencang-dan.html">Sepeda Motor Bebek Injeksi Kencang dan Irit Jupiter Z1</a></h1>
2012.09.11 12:33 [ ADDR : EDIT/ DEL : REPLY ]이 게시물에이 정보를 다시 보니 반갑 네요, 내가 같은 찾고 있지만 적절한 자원은 거기에 없었어요, 고맙습니다 이제 나는 내 연구를 찾고 있던 링크를 거십시오
2012.09.11 12:33 [ ADDR : EDIT/ DEL : REPLY ]이 논문은 내가 더 올바른 데이터를 얻기 위해 요금을 지불 할 필요가 많은 시간을 모르면하지 않으면 ME를 용이하게합니다.
2012.10.12 03:44 [ ADDR : EDIT/ DEL : REPLY ]