我有一个存储过程,用于在临时表中存储值。
这一切都运作良好,但我无法用
进行bcpexec 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
谢谢!
答案 0 :(得分:5)
我几天前偶然发现了这件事。
我从这个链接中学到了什么:
它不会看到临时表,因为它们不在你正在使用的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