есть ли проблема при создании двух временных таблиц в одной хранимой процедуре - PullRequest
0 голосов
/ 29 декабря 2011

Я написал ниже хранимую процедуру.В котором мне нужно создать две временные таблицы.В первой временной таблице я беру идентификаторы с использованием курсоров, а затем на основе некоторого запроса нужно вставить во 2-ю временную таблицуНо я получаю ошибку ниже.,В этой ситуации мне нужна помощь1009 *

- Таблица времен 2

Create TABLE TracksNameID
(
ID INT,
Name nvarchar(100)
)

SET @GetNextRecord = cursor for select ID from TempTable

open @GetNextRecord
FETCH FROM @GetNextRecord into @TrackId
while @@FETCH_STATUS = 0
BEGIN
INSERT INTO TracksNameID
SELECT  ID ,Name FROM  dbo.TestTable 
WHERE   dbo.TestTable.TrackID = @TrackId
END
FETCH FROM @GetNextRecord into @TrackId
DROP TABLE TempTable
END

Ответы [ 2 ]

2 голосов
/ 29 декабря 2011

На самом деле это не временные таблицы, вы создаете реальные объекты таблиц. Если хранимая процедура где-то не работает, таблицы не будут удалены. Лучше придерживаться табличных переменных:

DECLARE @tableName TABLE (
  id int, ... )

и используйте @tableName как таблицу (что это такое). Таким образом, все будет привязано к локальной области действия хранимой процедуры.

Недостатком табличных переменных над временными таблицами является отсутствие кластеризованных индексов, и вы не можете ALTER табличных переменных.

1 голос
/ 29 декабря 2011

Вы создаете обычные таблицы, имена временных таблиц должны начинаться с #

Попробуйте создать #TempTable и # TracksNameID

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...