2017-12-31 33 views
1

Ich habe eine Abfrage, die ohne eine Variable ausgeführt wird. Es funktioniert wie erwartet:SQL - OPENROWSET mit Variable anstelle von Zeichenfolge Pfad

Allerdings, wenn ich eine Variable hinzufügen. Es funktioniert nicht (ich habe eine Zeichenfolge durch eine Variable ersetzt). Ich bekomme diesen Fehler => Falsche Syntax in der Nähe von '@path'.

DECLARE @path varchar(50) = 'C:\xml\hamlet.xml'; 

INSERT INTO XMLwithOpenXML(XMLData, LoadedDateTime) 
SELECT CONVERT(XML, BulkColumn) AS BulkColumn, GETDATE() 
FROM OPENROWSET(BULK @path, SINGLE_BLOB) AS x; 

Weiß jemand, was hier falsch ist?

Antwort

2

Die parametrisierte dynamische SQL-Abfrage funktioniert möglicherweise nicht. Versuchen Sie, den Pfad explizit zu verketten:

DECLARE @path varchar(50) = 'C:\xml\hamlet.xml', 
     @sql nvarchar(max)= '' 

set @sql = ' 
INSERT INTO XMLwithOpenXML(XMLData, LoadedDateTime) 
SELECT CONVERT(XML, BulkColumn) AS BulkColumn, GETDATE() 
FROM OPENROWSET(BULK ''' + @path +''', SINGLE_BLOB) AS x;' 

exec sp_executesql @sql,N'' 
+0

Falsche Syntax in der Nähe von 'C:'. I es nicht die Variable als String in dieser Situation erkennt –

+1

@ JaxPatočka vergessen, einzelne Anführungszeichen einzuschließen. Probieren Sie die aktualisierte Antwort aus. Beachten Sie, dass Ihre ursprüngliche Abfrage einwandfrei funktioniert. – andrews

Verwandte Themen