Dans TSQL, j'utilise une requête directe pour sélectionner toutes les données d'une base de données Oracle. C'est une déclaration simple et ça fonctionne bien. Cependant, j'ai réalisé que je devais mettre quelques TRIM dans la requête de transmission.Analyse des valeurs dans les requêtes directes
, je suis passé de ceci:
Select *
à ceci:
Select TRIM(col1), col2
Maintenant, je ne peux pas référencer les colonnes de la transmission. Il semble que Select * vous permette de faire référence aux colonnes par leurs noms dans Oracle, mais une fois que les colonnes sont explicitement listées (comme col2), j'obtiens une erreur de nom de colonne Invalide.
Voici le code simplifié en question. Il indique que toute référence de SOURCE.col1
ou SOURCE.col2
sont des noms de colonne non valides. (Il est OK si je fais Sélectionnez * dans le pass-through bien.)
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
)
;
Ajouter des alias pour les valeurs parées ? – HABO
Dans la traversée? – user7733611
Ce serait l'endroit pour le faire, si c'est supporté. – HABO