programing

PL/SQL 개발자의 앰퍼샌드 이스케이프

iphone6s 2023. 7. 16. 12:52
반응형

PL/SQL 개발자의 앰퍼샌드 이스케이프

Oracle 데이터베이스에 대해 간단한 INSERT 문을 시도하고 있습니다.값 중 하나는 VARCHAR2 필드이며 삽입 문에는 앰퍼샌드가 포함되어 있습니다.이거 어떻게 하는 거지?다음과 같은 방법을 시도해 보았습니다.

  1. 설정된 이스케이프를 사용하여 & as \& 이스케이프
  2. set scan off (이로 인해 ORA-00922 누락 또는 잘못된 옵션 오류가 발생함)
  3. set define off (이로 인해 ORA-00922 누락 또는 잘못된 옵션 오류가 발생함)

다른 생각 있나요?

SQL 창 하단에는 대체 변수를 비활성화/활성화하는 버튼이 있습니다.

enter image description here

제가 해결한 방법은 다른 사람과 &을 탈출하는 것입니다.

예:

INSERT INTO Foo (Bar) VALUES ('Up && Away');

잘 작동합니다.모든 도움에 감사드립니다.

익숙해지는 데 시간이 걸리는 PL/SQL Developer의 기능 중 하나는 다양한 창 유형입니다.

이 중 하나는 명령 창으로, 기본적으로 SQL*Plus 에뮬레이터입니다.SQL*Plus 명령과 SQL을 실행할 수 있으므로SET ESCAPE,SET DEFINE그리고 정말로SET SCAN OFF저 창문에서 일하세요.

이런 거 먹어봤어요?

INSERT INTO tablex VALUES ('Sid ' || '&' || ' Nancy');

첫 번째 답변을 개선하자면, 당신의 문제는 PL/SQL Developer와 관련이 있습니다.PL/SQL Developer Command 창에서 블록을 실행하는 경우 SQL*Plus와 동일하게 작동하는 표준 SET DEFINE OFF도 사용할 수 있습니다.

아래의 콘캣은 제가 선택한 진술에서 한 것입니다.

select FUND_NM
FROM PERFORMANCE
WHERE upper(FUND_DESC) in ('My L&' ||'L FUNDS')

사용합니다chr(38)PL/SQL에 앰퍼샌드가 필요한 경우.

addr:= 'mysite.com/order.aspx?no=5678' || CHR(38) || 'id=947';
--above line gives you 'mysite.com/order.aspx?no=5678&id=947';

이것은 SQL Editor 문제일 뿐입니다.이 문제를 해결하려면 SET DEFINE OFF로 절차를 컴파일하기만 하면 됩니다. PL인 실행(서버에서 실행)은 이 문제에 직면하지 않습니다.

언급URL : https://stackoverflow.com/questions/7103715/escape-ampersand-in-pl-sql-developer

반응형