2011-08-18 4 views
17

Oracle 데이터베이스에 대해 간단한 INSERT 문을 사용하려고합니다. 값 중 하나는 VARCHAR2 필드이고 insert 문은 앰퍼샌드를 포함합니다. 어떻게해야합니까?PL/SQL Developer에서 앰퍼샌드 이스케이프

    이 (가) &
  1. 세트 세트 이스케이프와 & \로 떨어져 스캔
  2. 금지 설정 정의 ((이 없거나 잘못된 옵션 오류 ORA-00922 원인) 탈출
  3. : 나는 다음과 같은 방법을 시도했습니다 이로 인해 ORA-00922 누락 또는 잘못된 옵션 오류가 발생합니다.

다른 아이디어가 있습니까?

+3

이 질문에서 chr (38) 솔루션을 사용하여 "해결했습니다": http://stackoverflow.com/questions/1137354/oracle-pl-sql-escape-character-for-a 더 우아한. –

+0

SQL 창이나 명령 창을 통해 삽입을 실행하려고합니까? –

+0

Ray, 정의를 완전히 설정하는 대신 다른 캐릭터로 설정해 보았습니까? PLSQL Developer를 사용하지 않아도 도움이 될지 모르지만 ... – Ollie

답변

21

어떻게 해결 했습니까? &을 다른 &으로 이스케이프하고 있습니다. 예를 들어

는 :

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

는 잘 작동합니다. CONCAT 연 아래 완벽하게 나를 위해 잘 작동 모든 도움

+0

실제로, 무한 루프를 입력 할 수 있으므로 "&&"를 "&&"로 plsqld 기본 검색 및 바꾸기 도구로 바꾸지 않도록주의하십시오. – roselan

+1

나를위한 것이 아닙니다 ... 내 해결책은 "... INSERT INTO tablex VALUES ('Sid'|| '&'|| '낸시'); ..." –

+0

나를 위해 너무 효과가 없었습니다. – th1rdey3

8

시도해 보셨습니까?

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

문제점은 PL/SQL Developer와 관련이 있습니다. PL/SQL Developer 명령 창에서 블록을 실행하는 경우 SQL * Plus에서와 동일한 방식으로 작동하는 표준 SET DEFINE OFF를 사용할 수도 있습니다.

+0

나는'chr (38)'해결책 레이가 언급 한 것보다 더 이상 우아하지 않다고 생각합니다. – APC

+0

이 적절하지만 1 년 전에 비슷한 문제에 직면했을 때 사용했던 것이 었습니다. http://www.orafaq.com/wiki/SQL_FAQ에는 SQL * Plus에서 SET ESCAPE '\', SET DEFINE ~ 또는 SET SCAN OFF와 같은 멋진 솔루션이 있습니다. – Aitor

+1

좋은 솔루션과 글로벌 설정으로보다 즐거운 . 조금 짧게 : 'Sid &'|| '낸시'. –

12

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

이들 중 하나는 기본적으로 SQL * Plus 에뮬레이터 인 COMMAND 창입니다. SQL뿐만 아니라 SQL * Plus 명령도 실행할 수 있으므로 SET ESCAPE, SET DEFINE 및 실제로 SET SCAN OFF이 해당 창에서 작동합니다.

4

주셔서 감사합니다 난 내 선택 성명에서 무슨 짓을 :

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

은 내가 PL/SQL에서 앰퍼샌드 필요 chr(38)를 사용합니다.

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

현재 버전의 PL/SQL Developer (11.0.x)에는 대체 변수를 활성화/비활성화 할 수있는 버튼이 있습니다.

enter image description here

+0

찾기가 어려웠습니다. 나는 설정에서 모든 옵션을 탐색하는 데 10 분을 소비하고 온라인으로 만 찾았습니다. –

0

이건 그냥 SQL 편집기 문제입니다. 이 문제를 해결하려면 SET DEFINE OFF를 사용하여 프로 시저를 컴파일하십시오. . PL (서버에서 실행 중) 인 실행은이 문제에 직면하지 않습니다.