문제
Ok,이 비트의 모호한 질문,하지만 희망이 있는 사람이 나를 도울 수 있습니다.
시스템에서 일하고 있어요 구축 dynamic SQL 문자열 실행을 위해 내부에 저장되는 절차,그리고 일부는 dynamic 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.따옴표는 필요한 주위에 별명이기 때문에 공백을 포함할 수 있습니다.
해결책
할 수 있습니 그냥 넣어 다른 문자는 대신 쌍따옴표 및 교체하는 것에 큰 따옴표 코드에서?
무언가 이것을 좋아한다:
SELECT table1.Col1 AS "This is |not| an alias" FROM table1
그럼 그냥 바꾸기|으로".
나는 그것을 알고의 해킹,하지만 난 어떤 생각할 수 없는 더 나은 솔루션...고 당신이 하는 무엇이 있는 해킹이 어쨌든."좋은"방법을 것을 선택하는 값과 열 이름을 별도로 연결에 당신의 코드입니다.는 것을 매우 깨끗합니다.
다른 팁
를 사용하여 Oracle 견적 운영자:
select q'#someone's quote#' from dual;
는'#'로 대체될 수 있는 모든 캐릭터
을 실행할 때 this:
select 'test"columnname"' from dual
Oracle 합을 반환합니다(예 Oracle-생성된 열 이름):
'TESTCOLUMNNAME'
--------------------------------
test"columnname
사실에는 오라클의 열 이름을 포함하지 않 내 큰따옴표는 나에게 오라클 아마도 나타낼 수 없습니다.
최선의 방법으로 지금까지 볼 수있는 스트립 큰따옴표로서의 데이터를 사용하기 전에 열 이름이 있습니다.슬프게도,는 것이 또한 필요로 할 것 같은 때 필터링할 선택 그 열이 나는 볼 수 없는 또 다른 방법이다.
아마도 유익한 지역을 조사하는 것으로 보는 견적 방법입니다.
내$quotedString=$dbh->quote($string);
이,두 개의 작은 따옴표는 실제로 중 하나처럼 보이는 따옴표는 출력:
select 1 as "University ''John Smith''" from dual;