按动态文件名批量插入

时间:2012-07-11 11:14:36

标签: sql-server stored-procedures bulk

我尝试批量插入不同的文件。

当我编码时:

SET @xml=( Select * From OPENROWSET(
                BULK  'C:\Data\csvToXml.xml',SINGLE_BLOB)x)

它正在运作。

如果我将路径作为参数,如:

     SET @Path= 'C:\Data\csvToXml.xml'  


SET @SqlStmt= N' Select @xmlDoc=( Select * From OPENROWSET(
                BULK '''+@Path+''' ,SINGLE_BLOB)x)'

     exec sp_executesql @SqlStmt, N'@xmlDoc XML',@xmlDoc        

@xmlDoc似乎是空的。我找不到我错的地方。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

来到这里寻找解决我自己的问题但最终解决了这个问题!

DECLARE @Output int = 0;
DECLARE @params nvarchar(max) = N'@DesiredValue int OUTPUT';
DECLARE @sql_string nvarchar(max) = N'SELECT @DesiredValue = 13';
EXECUTE sp_executesql @sql_string,  @params, @DesiredValue = @Output OUTPUT
SELECT @Output -- yields 13

事实证明,您不仅要在@params参数中传递关键字OUTPUT,还要传递您想要检索的变量。 “@ DesiredValue = @Output OUTPUT”看起来有点奇怪,因为@Output正在取@DesiredValue的值,而不是相反。

Documentation