我想将文件名作为SQL BULK加载中的变量传递。但我收到语法错误。如果有人可以帮助那将是伟大的。下面是我写的代码。
DECLARE @XML AS XML,@File VARCHAR(200)
SELECT @File='C:\xyz.xml'
SELECT @XML= CONVERT(XML, BulkColumn) FROM OPENROWSET(BULK @File, SINGLE_BLOB) AS x
我不能像BULK那样硬编码@File C:\ xyz.xml'因为文件名会经常更改。
答案 0 :(得分:3)
您无法对其进行参数化。所以使用动态SQL
答案 1 :(得分:0)
编辑答案,因为它没有给出@XML值
DECLARE @XML AS XML, @File VARCHAR(200);
DECLARE @SQL nvarchar(max);
SET @File='C:\xyz.xml';
SET @SQL = 'SELECT @XML_OUT= CONVERT(XML, BulkColumn) FROM OPENROWSET(BULK ''' + @File + ''', SINGLE_BLOB) AS x';
EXEC sys.sp_executesql @SQL, N'@XML xml OUT', @XML_OUT=@XML OUTPUT;