2008-09-11 4 views
5

괜찮 았던 질문이지만 잘하면 누군가 나를 도와 줄 수 있습니다.Oracle Column Aliases의 큰 따옴표

저장 프로 시저 내에서 실행을 위해 동적 SQL 문자열을 빌드하는 시스템과 그 자체로 실제로 사용자 생성 데이터의 다른 테이블에서 검색된 값인 열 별칭을 정의하는 동적 SQL의 일부입니다.

예를 들어, 문자열은 다음과 유사 할 수 있습니다.

SELECT table1.Col1 AS "This is an alias" FROM table1 

잘 작동합니다. 그러나 별칭에 사용되는 값에는 큰 따옴표가 포함될 수 있으므로 큰 따옴표가 포함될 수 있습니다. 어떻게 든 별칭 안에 큰 따옴표를 벗어날 수있을 것이라고 생각했지만 행하는 방법을 찾지 못했습니다. 백 슬래시가 작동하지 않고 행에서 두 개의 큰 따옴표를 사용하면이 오류가 발생합니다.

SQL Error: ORA-03001: unimplemented feature 
03001. 00000 - "unimplemented feature" 
*Cause: This feature is not implemented. 

이전에이 문제와 관련해 경험이있는 사람이 있습니까? 누구나 가지고있는 통찰력을 환호합니다.

p.s. 별명은 공백을 포함 할 수 있기 때문에 따옴표가 필요합니다.

답변

4

큰 따옴표 대신 다른 문자를 넣고 코드에서 큰 따옴표로 바꿀 수 있습니까? 이 같은

뭔가 :

SELECT table1.Col1 AS "This is |not| an alias" FROM table1 

그럼 그냥 교체 | with ".

나는 해킹이라고 알고 있지만, 더 좋은 해결책은 생각할 수 없다. 어쨌든 해킹이있다."좋은 "방법은 값을 선택하는 것입니다. 열 이름을 따로 분리하여 코드에 연결하면 작업이 훨씬 쉬워집니다.

1

나는 실행하면이 :

select 'test"columnname"' from dual 

오라클이 (통지 오라클 생성 된 열 이름을) 반환

'TESTCOLUMNNAME' 
-------------------------------- 
test"columnname 

오라클의 열 이름을 내 따옴표를 포함하지 않는 사실 오라클이 아마도 그것을 표현할 수 없다고 말해줍니다.

가장 좋은 방법은 열 이름을 사용하기 전에 데이터에서 큰 따옴표를 제거하는 것입니다. 슬프게도, 그럴 경우 을 선택했을 때 동일한 필터링을 수행해야하지만 다른 방법은 없습니다.

0

아마도 유익한 조사 영역은 견적 방법을 조사하는 것입니다.

my $ quotedString = $ dbh-> quote ($ string);

2

사용 오라클 인용 연산자 :

select q'#someone's quote#' from dual; 

'#'은

0

이 시도 모든 문자로 대체 될 수있다, 두 개의 작은 따옴표 실제로 출력에 하나의 큰 따옴표 같이 :
select 1 as "University ''John Smith''" from dual;

관련 문제