Я пытаюсь создать динамический скрипт для создания нескольких таблиц. Ниже приведен примерСценарий для создания динамических таблиц
--exec USP_Dynamic_tablescript
Create procedure USP_Dynamic_tablescript
as
DECLARE @SQLStmt nvarchar(3000)
DECLARE @table_name nvarchar(3000)
DECLARE @i int
set @i=1
while(@i<=3)
begin
set @table_name = '#tblSales' + convert(varchar(10),@i)
SET @SQLStmt = 'create TABLE ' + @table_name + '(' + ' CityId int , ' +
' SalesPersonId int , ' + ' SalesAmount numeric(10,2), ' +
' MetTarget nvarchar(2) ' + ') '+
' ON [PRIMARY] WITH (DATA_COMPRESSION = NONE)'
print @table_name
EXEC sp_executesql @SQLStmt
set @i = @i + 1
end
SELECT * from #tblSales1
INSERT INTO #tblSales1(CityId, SalesPersonId, SalesAmount, MetTarget)
VALUES (1, 101, 1650.00, 'Y')
Мне нужно запустить инструкцию DML в этих временных таблицах.
если я пытаюсь, я получаю ниже ошибки. Пожалуйста, помогите мне разобраться в области, таблицы успешно созданы, но как я могу запустить операцию DML.
Msg 208, Level 16, State 0, процедура USP_Dynamic_tablescript, линия 31
Неверное имя объекта '# tblSales1'.
Вы создаете ** таблицу Temp ** ** внутри динамического запроса * *, который доступен только в ** сеансе динамического запроса **, вы не можете получить к нему доступ за пределами динамического запроса –
возможный дубликат [ошибка при создании таблицы temp с использованием динамического sql] (http://stackoverflow.com/questions/9338963/ошибка в создании-A-ТЕМП-таблицу с использованием-динамическим SQL) – AHiggins
Если вы хотите удалить свой вопрос, то удалите его, но не редактируйте текст, чтобы существующие ответы не имели никакого отношения к вашему вопросу. –