앰퍼샌드 (&)가 포함 된 주석이있는 패키지를 만드는 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 …
(_은 단일 문자에 대한 와일드 카드입니다.)