如何在OPENROWSET命令中将路径传递给Bulk

时间:2018-06-11 18:58:58

标签: sql-server tsql bulk-load openrowset

我有一个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 :(得分:1)

使用动态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)