В хранимой процедуре динамически создаются колонки во временной таблице. При первом запуске создается колонка с именем "Column1", при следующем "Column2" , т.е. имя колонки - вычисляемое.
EXEC _test1 'column1'
EXEC _test1 'column2'
EXEC _test1 'column3'
Но фактически, при втором и третьем обращении в таблице отображается колонка 'column1' - даже если открываю новое окно SSMS или же запускаю новый экземпляр SSMS .
dbo._test1CREATE procedure dbo._test1(
@name varchar( 32)
)
AS
BEGIN
Select SPID = @@SPID
if object_id('tempdb..#TST') is not null Select 'temp table #TST exists on start'
Create table #TST( dummy varchar(32) NULL )
Select * from #tst
Declare @SQLString varchar(255)
SET @SQLString = 'ALTER TABLE #TST add [' + @name + '] varchar(255) null '
EXEC ( @SQLString )
Select * from #tst
drop table #TST
if object_id('tempdb..#TST') is not null Select 'temp table #TST exists on STOP'
END
Совершенно неясно, откуда при "втором" вызове в временной таблице появляется старое имя колонки? На более старых 2000 - 2014 версиях SQL такая проблема не возникала. Проблема проявляется на Microsoft SQL Server 2019.