Как передать путь в Bulk в команде OPENROWSET - PullRequest
0 голосов
/ 11 июня 2018

У меня есть файл XML.Я хотел бы выполнить запрос по нему.Я использую OPENROWSET(BULK ... , SINGLE_BLOB), как показано ниже.

    DECLARE @XML XML

    SELECT 
         @XML = CAST( c1 AS XML)    
    FROM OPENROWSET(BULK '\\ServerA\Test\AA.xml', SINGLE_BLOB) AS T1(c1);

    SELECT @XML

Но я должен использовать переменную для пути, как показано ниже:

    DECLARE @XML_File_Path NVARCHAR(1000) 

    SET  @XML_File_Path = '\\ServerA\Test\AA.xml'

    DECLARE @XML XML

    SELECT 
            @XML = CAST( c1 AS XML)    
    FROM OPENROWSET(BULK @XML_File_Path, SINGLE_BLOB) AS T1(c1);

    SELECT @XML

, и эта доза не работает.Как получить переменную после ключевого слова BULK?

1 Ответ

0 голосов
/ 12 июня 2018

Использовать динамический sql:

DECLARE @XMLFilePath NVARCHAR(1000)
DECLARE @SQL NVARCHAR(MAX)

SET  @XMLFilePath = '\\ServerA\Test\AA.xml'

SET @SQL = N'
DECLARE @XML XML
SELECT @XML = CAST( c1 AS XML) FROM OPENROWSET(BULK ''' + @XMLFilePath + ''', SINGLE_BLOB) AS T1(c1);
SELECT @XML'

EXEC(@SQL)
...