2016-06-06 6 views
0

Mit dem folgenden Code unten, erhalte ich folgende Fehlermeldung:"XQuery [nodes()]: Die XQuery-Syntax 'union' wird nicht unterstützt."

XQuery [nodes()]: The XQuery syntax 'union' is not supported.

DECLARE @input XML = (Ich versuche, für diese Zeichenfolge in der vollen XML zu geben, aber es ist hier nicht übersetzen (verkürztes bekommen) Es gibt sogar. schneidet ab, wenn ich Teile davon auswähle.Ich weiß, dass es der Schlüssel ist, um die Frage zu beantworten, aber vielleicht kann jemand den Fehler erklären, und ich kann diesen Variablenstring untersuchen) ??

CREATE TABLE #Fields 
(F1RowID int identity(1,1),GroupID int,TableID int,FieldName nvarchar(50) 
,FieldValue nvarchar(50),OldFieldValue nvarchar(50),ExcludeField bit) 

INSERT INTO #Fields (FieldName,FieldValue,TableID,ExcludeField) 
SELECT FieldName = C.value('local-name(.)', 'varchar(50)'), 
FieldValue = C.value('(.)[1]', 'varchar(50)') , 
TableID = 1,ExcludeField = 0 FROM @input.nodes 
('/data/CSNPay|CSNHistoryGroup/CSNPay|CSNHistory/*') AS T(C) 
+0

Ihre Eingabe ist nicht relevant - XQuery in SQL unterstützt den Operator '|' (union) einfach nicht. Ich bin mir nicht sicher, ob es eine offensichtliche Neuschreibung gibt. –

+0

Das ist bizarr, denn ich hätte schwören können, dass dieser Code vorher funktioniert hat. Danke, ich werde mich darum kümmern. –

Antwort

0

SQL Server nicht unterstützt XQuery Gewerkschafts Betreiber |. Wenn die einzelnen Unterabfragen keine überlappenden Ergebnisse liefern, brauchen Sie die Mengen-basierte Vereinigungsfähigkeit sowieso nicht: einfach eine Sequenz zusammenstellen. Andernfalls müssen Sie mit Duplikaten umgehen.

FROM @input.nodes('(/data/CSNPay, CSNHistoryGroup/CSNPay, CSNHistory/*)') AS T(C) 

Ich bin nicht sicher, ob diese Abfrage tatsächlich tut, was Sie erwarten - sind Sie sicher über die einzelnen Pfade (einige Start an der Wurzel, den aktuellen Kontext einige at)?