Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL中的批量加载命令中传递字符串变量_Sql_Sql Server 2008 - Fatal编程技术网

如何在SQL中的批量加载命令中传递字符串变量

如何在SQL中的批量加载命令中传递字符串变量,sql,sql-server-2008,Sql,Sql Server 2008,我想在SQL批量加载中将文件名作为变量传递。但是我得到了一个语法错误。如果有人能帮忙,那就太好了。下面是我写的代码 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“C:\xyz.xml”那样硬编码@File,因为文件名会经常更改。

我想在SQL批量加载中将文件名作为变量传递。但是我得到了一个语法错误。如果有人能帮忙,那就太好了。下面是我写的代码

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“C:\xyz.xml”那样硬编码@File,因为文件名会经常更改。

您不能将其参数化。因此,请使用动态SQL

DECLARE @XML AS XML, @File VARCHAR(200);
DECLARE @SQL nvarchar(max);

SET @File='C:\xyz.xml';
SET @SQL = 'SELECT @XML= CONVERT(XML, BulkColumn) FROM OPENROWSET(BULK ''' + @File + ''', SINGLE_BLOB) AS x';

EXEC sys.sp_executesql @SQL, N'@XML xml', @XML;

编辑您的答案,因为它没有给出@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;

啊!!!我换了标签。对不起,标签错了@霍布斯非常喜欢指针。我完全绝望了。但我需要编辑答案。但仍然是1+:)@gbn