bcp工具运行的存储过程含有临时表,函数时出现无效对象的错误
--此存储过程含有临时表
create proc test
as
select id,name
into #tmp
from sysobjects
select *
from #tmp
drop table #tmp
go
-----在查询分析器中运行没问题
exec pubs..test
go
----- 用BCP就会出现错误 '#tmp '对象无效
declare @s varchar(8000)
set @s= 'bcp "exec pubs..test " queryout "c:\ '+convert(varchar,getdate(),112)+ '.csv " -T /c '
exec master..xp_cmdshell @s
go
drop proc test
如果不能这么用有什么好的解决办法啊?
------解决方案----------------------先把exec test的结果存储辅助表t
create table t(id int,name varchar(1000))
insert t exec test
--用BCP
declare @s varchar(8000)
set @s= 'bcp "select * from pubs..t " queryout "c:\ '+convert(varchar,getdate(),112)+ '.csv " -T /c '
exec master..xp_cmdshell @s
go
drop proc test
drop table t
------解决方案--------------------楼主,存储过程的临时表,存储过程执行完毕就自动删除了,最后那句drop没有必要了