it-source

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

criticalcode 2023. 2. 25. 21:22
반응형

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

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

이 방법이 효과적일 수 있습니다.

set define off

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

'StackOverflow &' || ' you'

편집: 저장할 때 클릭해서 행복했습니다...이것은 블로그에서 인용한 것입니다.

때때로 대체 변수를 사용하는 경우 정의를 해제하지 않을 수 있습니다.이 경우 앰퍼샌드를 에서와 같이 숫자 등가로부터 변환할 수 있습니다.|| 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 <- 이것이 내가 찾은 최고의 솔루션이다.

저도 노력했는데...

set 정의 }

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

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

백슬래시 문자를 사용하여 앰퍼샌드를 벗어날 수도 있습니다.\코멘트를 변경할 수 있는지 확인합니다.

WHEN 열 = 'sometext & more text'라는 CASE 문구가 있었습니다.

WHEN 열 = 'sometext ' | | CHR(38) | | 'more text'로 대체했습니다.그 후...

WHEN 컬럼을 'somethext - more text'와 같이 사용할 수도 있습니다.그 다음...

(_는 단일 문자의 와일드카드입니다).

언급URL : https://stackoverflow.com/questions/118190/how-do-i-ignore-ampersands-in-a-sql-script-running-from-sql-plus

반응형