使用SQL Server 2008中引用一個#temp表,我有兩個存儲過程 -從外部進程
create procedure [dbo].[SH_Export_data] (@unit varchar(5)) as
declare @sqlquery varchar(max) = 'select check_dt from chk_data where unit = '
+ @unit
IF object_id('tempdb..#TempTbl') IS NOT NULL
DROP TABLE #TempTbl
create TABLE #TempTbl (
col1 varchar(max), col2 varchar(max)
)
insert #TempTbl(col1)
exec(@sqlquery)
create procedure [dbo].[SH_Export] as
DECLARE @unit varchar(5), @sql varchar(max) = '', @file_name = 'c:\export.xls'
DECLARE crsr CURSOR for
select unit
from communities
OPEN crsr
FETCH NEXT FROM crsr
into @unit
while @@FETCH_STATUS = 0
BEGIN
set @sql = 'exec master..xp_cmdshell ''bcp "exec dbo.SH_Export_data ' +
@unit + '" queryout "' + @file_name + '" -c -T "''
END
注意,有一個存儲過程調用另一個。被調用的存儲過程將創建一個臨時表並在其內部使用它。
當我運行 -
exec dbo.SH_Export
我得到這個錯誤信息 -
Error = [Microsoft][SQL Server Native Client 10.0][SQL Server]
Invalid object name '#TempTbl'.
但我可以運行,而不會出現錯誤 -
exec dbo.SH_Export_data 63058
是什麼原因造成的?
作品。謝謝Aaron。 – duckmike 2012-03-12 20:49:50