[sql] SQL Plus에서 실행되는 SQL 스크립트에서 앰퍼샌드를 무시하려면 어떻게합니까?

앰퍼샌드 (&)가 포함 된 주석이있는 패키지를 만드는 SQL 스크립트가 있습니다. SQL Plus에서 스크립트를 실행할 때 &로 시작하는 문자열에 대한 대체 값을 입력하라는 메시지가 표시됩니다. SQL Plus가 앰퍼샌드를 무시하도록이 기능을 비활성화하려면 어떻게합니까?



답변

이것은 당신을 위해 일할 수 있습니다.

set define off

그렇지 않으면 앰퍼샌드가 문자열 끝에 있어야합니다.

'StackOverflow &' || ' you'

편집 : 저장할 때 클릭 만족했습니다 … 이것은 블로그 에서 참조되었습니다 .


답변

가끔 대체 변수를 사용하는 경우 정의를 끄고 싶지 않을 수 있습니다. 이 경우 앰퍼샌드를 in과 같은 숫자에서 변환 || Chr(38) ||하거나 에서와 같이 단일 문자로 추가 할 수 || '&' ||있습니다.


답변

아래 코드로 해결했습니다.

set escape on

왼쪽에 & 옆에 \를 넣으십시오. 'value_\&_intert'

Att


답변

스크립트 실행시 찾는 특수 문자를 다른 값으로 설정할 수 있습니다. SET DEFINE <1_CHARACTER>

기본적으로 DEFINE 기능 자체가 켜져 있으며 & 로 설정되어 있습니다 .

이미 언급했듯이 끌 수 있지만 다른 값으로 설정하여 피할 수도 있습니다. 어떤 기호로 설정했는지 잘 알고 있어야합니다. 아래 예에서는 # 문자를 선택했지만 그 선택은 단지 예일뿐입니다.

SQL> select '&var_ampersand #var_hash' from dual;
Enter value for var_ampersand: a value

'AVALUE#VAR_HASH'
-----------------
a value #var_hash

SQL> set define #
SQL> r
  1* select '&var_ampersand #var_hash' from dual
Enter value for var_hash: another value

'&VAR_AMPERSANDANOTHERVALUE'
----------------------------
&var_ampersand another value

SQL>


답변

set define off <-이것은 내가 찾은 최고의 솔루션입니다

나는 또한 시도했다 …

정의 설정}

앰퍼샌드 문자 ‘&’가 포함 된 여러 레코드를 삽입 할 수 있었지만 텍스트에 ‘}’문자를 사용할 수 없어서 “set define off”를 사용하기로 결정했고 모든 것이 제대로 작동합니다.


답변

이 멋진 FAQ 에 따르면 몇 가지 해결책이 있습니다.

\주석을 수정할 수있는 경우 백 슬래시 문자로 앰퍼샌드를 이스케이프 할 수도 있습니다 .


답변

WHEN column = ‘sometext & more text’THEN …이 포함 된 CASE 문이 있습니다.

나는 그것을 WHEN column = ‘sometext’|| CHR (38) || ‘더 많은 텍스트’THEN …

WHEN 열 LIKE ‘sometext _ more text’THEN …

(_은 단일 문자에 대한 와일드 카드입니다.)