code

Oracle Database에서 "SET DEFINE OFF"를 사용하는시기 또는 이유

codestyles 2021. 1. 7. 08:00
반응형

Oracle Database에서 "SET DEFINE OFF"를 사용하는시기 또는 이유


Oracle에서 스크립트를보고 있는데 인식 할 수없는 것이 있습니다.

REM INSERTING into database1."Users"
 SET DEFINE OFF;
Insert into database1."Users" ("id","right") values ('1','R');

"set define off"에 대한 문서를 찾고 있는데 문자 그대로 "대체 변수를 값으로 바꾸는 명령 구문 분석 비활성화"라고 작성하고 있습니다.

나는 그들이 무엇을 말하고 싶어하는지 정말로 이해하지 못한다.

누구든지 나를 도울 수 있습니까?


기본적으로 SQL Plus는 '&'를 대체 문자열을 시작하는 특수 문자로 처리합니다. 다른 이유로 '&'가 포함 된 스크립트를 실행할 때 문제가 발생할 수 있습니다.

SQL> insert into customers (customer_name) values ('Marks & Spencers Ltd');
Enter value for spencers: 
old   1: insert into customers (customer_name) values ('Marks & Spencers Ltd')
new   1: insert into customers (customer_name) values ('Marks  Ltd')

1 row created.

SQL> select customer_name from customers;

CUSTOMER_NAME
------------------------------
Marks  Ltd

스크립트에 '&'문자가 포함 된 (또는 포함 할 수있는) 데이터가 있고 위와 같은 대체 동작을 원하지 않는 경우을 사용 set define off하여 스크립트를 실행하는 동안 동작을 끕니다.

SQL> set define off
SQL> insert into customers (customer_name) values ('Marks & Spencers Ltd');

1 row created.

SQL> select customer_name from customers;

CUSTOMER_NAME
------------------------------
Marks & Spencers Ltd

set define on스크립트 끝에 추가 하여 기본 동작을 복원 할 수 있습니다.


다음은 그 예입니다.

SQL> set define off;
SQL> select * from dual where dummy='&var';

no rows selected

SQL> set define on
SQL> /
Enter value for var: X
old   1: select * from dual where dummy='&var'
new   1: select * from dual where dummy='X'

D
-
X

를 사용하면 set define off이있는 행을 가져와 &var사용자에게 값을 입력하라는 메시지를 표시 &var하고 입력 한 값 (이 경우)으로 X바꿨습니다.

참조 URL : https://stackoverflow.com/questions/34332639/when-or-why-to-use-a-set-define-off-in-oracle-database

반응형