In TSQL verwende ich eine Pass-Through-Abfrage, um alle Daten aus einer Oracle-Datenbank auszuwählen. Es ist eine einfache Aussage und es funktioniert gut. Ich erkannte jedoch, dass ich einige TRIMs in die Pass-Through-Abfrage einfügen muss.Analysieren von Werten in Pass-Through-Abfrage
Also ging ich von dieser:
Select *
dazu:
Select TRIM(col1), col2
Jetzt kann ich die Spalten in der Passthrough nicht verweisen. Es scheint, als ob Select * Ihnen erlaubt, auf die Spalten nach ihren Namen in Oracle zu verweisen, aber sobald die Spalten explizit aufgelistet sind (wie zB col2), erhalte ich einen ungültigen Spaltennamenfehler.
Hier ist der vereinfachte Code in Frage. Es besagt, dass jede Referenz von SOURCE.col1
oder SOURCE.col2
ungültige Spaltennamen sind. (Es ist in Ordnung, wenn ich aber eine Select * im Pass-Through tun.)
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
)
;
Aliase hinzufügen für die beschnittenen Werte ? – HABO
Innerhalb des Pass-Through? – user7733611
Das wäre der Ort, um es zu tun, wenn es unterstützt wird. – HABO