1

我正在尝试使用连接来自多个表的多个值的查询来创建一个平面文本文件。这个结果集被插入到一个表变量中,我想在 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]无法准备语句。空值

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

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

我收到此错误消息

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

是否无法在 xp_cmdshell 中使用临时表或表变量?

4

1 回答 1

2

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

于 2013-06-13T12:56:11.770 回答