TSQL에서 Oracle 데이터베이스의 모든 데이터를 선택하기 위해 통과 쿼리를 사용하고 있습니다. 간단한 진술이고 잘 작동합니다. 그러나 통과 쿼리에 TRIM을 넣어야한다는 것을 알게되었습니다.통과 쿼리의 값 구문 분석
그래서, 나는이에서 갔다 : 이것에
Select *
:
Select TRIM(col1), col2
을 지금, 나는 통과의 열을 참조 할 수 없습니다. Select *와 같이 Oracle에서 열을 참조 할 수 있지만 col2와 같이 열이 명시 적으로 나열되면 잘못된 열 이름 오류가 발생합니다.
다음은 문제의 단순화 된 코드입니다. SOURCE.col1
또는 SOURCE.col2
의 참조가 유효하지 않음을 나타냅니다. (그래도 난 통과의 선택 *를 할 경우는 OK입니다.)
MERGE dbo.SqlServerTable AS TARGET
USING (
SELECT * FROM OPENQUERY(ORA_REP, '
SELECT
TRIM(col1),
col2
FROM OracleTable
'
)
) AS SOURCE
ON (TARGET.Foo = SOURCE.col1)
WHEN MATCHED THEN
UPDATE SET
TARGET.Bar = SOURCE.col2
WHEN NOT MATCHED THEN
INSERT (
Foo,
Bar
)
VALUES (
SOURCE.col1,
SOURCE.col2
)
;
트리밍 된 값에 대한 별칭 추가 ? – HABO
통과 내? – user7733611
지원되는 경우 해당 작업을 수행 할 수있는 곳입니다. – HABO