programing

Oracle 데이터베이스에서 "SET DEFINE OFF"를 사용해야 하는 시기 또는 이유

mailnote 2023. 4. 6. 21:53
반응형

Oracle 데이터베이스에서 "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

반응형