将表变量与xp_cmdshell一起使用

时间:2013-06-13 12:53:54

标签: sql

我正在尝试使用连接来自多个表的多个值的查询来创建平面文本文件。这个结果集被插入到一个表变量中,我想在xp_cmdshell调用中使用它来创建文本文件。这是我的代码示例。

DECLARE @tablevar table (string nvarchar(200))

INSERT INTO @tablevar
SELECT 'test' + column1 + column2
FROM SampleTable

EXEC xp_cmdshell 'bcp "SELECT * FROM @tablevar" queryout "C:\temp\output.txt" -T -c '

当我进行xp_cmdshell调用时出现以下错误:

  

SQLState = 42000,NativeError = 1087   错误= [Microsoft] [SQL Native Client] [SQL Server]必须声明表变量“@outputtable”。   SQLState = 42000,NativeError = 8180   错误= [Microsoft] [SQL Native Client] [SQL Server]语句无法准备。   NULL

尝试使用临时表时,请使用此代码

EXEC xp_cmdshell 'bcp "Select * From #temp" queryout "C:\temp\outputtable.txt" -T -c '

我收到此错误消息

  

SQLState = 42S02,NativeError = 208   错误= [Microsoft] [SQL Native Client] [SQL Server]无效的对象名称't​​empdb.temp'。   SQLState = 42000,NativeError = 8180   错误= [Microsoft] [SQL Native Client] [SQL Server]语句无法准备。

使用临时表或表变量与xp_cmdshell是不可能的吗?

1 个答案:

答案 0 :(得分:2)

您的@table变量和#temp表都超出了其他连接的范围,但##my_global_temp等全局临时表应该有效。