bcp不会输出临时表

时间:2014-09-10 11:13:05

标签: sql bcp

我有一个存储过程,用于在临时表中存储值。

这一切都运作良好,但我无法用

进行bcp
exec master..xp_cmdshell 'bcp "exec sp_test '2006-07-21' " queryout c:\test.txt -c '

如果我将表格更改为常规表格,那么一切正常。你能否以这种方式使用临时表?

我不一定要分享代码,因为它包含公司的东西,但它基本上就像这样

SELECT 
* 
INTO #Extractr
FROM 
TABLE A
WHERE ID in (4,9,14)

错误讯息为invalid object #Extractr

谢谢!

3 个答案:

答案 0 :(得分:5)

我几天前偶然发现了这件事。

我从这个链接中学到了什么:

  

http://www.dbforums.com/microsoft-sql-server/1605565-can-we-have-temporary-table-store-procedure-when-using-bcp.html

它不会看到临时表,因为它们不在你正在使用的tempdb数据库中。

另外,我通过将本地临时表替换为全局临时表来完成我的工作(##而不是#,只需简单的替换帮助我)。

正如@Kevin在评论中提到的,您也可以使用表变量来达到同样的目的。

希望这对你有用。

答案 1 :(得分:1)

您是否尝试在查询中引用这样的临时表:tempdb..#Extractr 例如:

SELECT 
* 
INTO tempdb..#Extractr
FROM 
TABLE A
WHERE ID in (4,9,14)

答案 2 :(得分:0)

使用表变量而不是临时表帮助我弄明白。

DECLARE @tbl1 TABLE
(fld1 int,...)

INSERT INTO @tbl1 
SELECT * FROM Table1