Используя SQL Server 2008, у меня есть две хранимые процедуры -
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
что вызывает это?