Проблема с удалением временной таблицы - PullRequest
0 голосов
/ 19 июля 2011

У меня есть скрипт, который работает без 11 строк

Declare c Cursor For Select Distinct InvestmentId From dbo.Investment
Open c
DECLARE @InvestmentIdTemp INT
Fetch next From c into @InvestmentIdTemp

While @@Fetch_Status=0 Begin
    Declare @tablevar table(col1 DATETIME)
    insert into @tablevar(col1) EXEC dbo.CalculateActualUpdateDate @InvestmentIdTemp
    UPDATE dbo.InvestmentData SET ActualUpdateDate =(SELECT TOP 1 col1 FROM @tablevar) WHERE InvestmentID=@InvestmentIdTemp

    DROP table @tablevar

   Fetch next From c into @InvestmentIdTemp
End

Close c
Deallocate c

, где у меня ошибка:

Msg 102, Level 15, State 1, Line 11
Incorrect syntax near '@tablevar'.

Как мне удалить эту таблицу?

1 Ответ

2 голосов
/ 19 июля 2011

Как я уже сказал, табличная переменная не является реальной таблицей в базе данных, это означает, что вы не можете "DROP" их.Вы можете очистить таблицу в конце цикла while.Вам не нужно располагать переменную.

Declare c Cursor For Select Distinct InvestmentId From dbo.Investment
Open c

DECLARE @InvestmentIdTemp INT
Declare @tablevar table(col1 DATETIME)

Fetch next From c into @InvestmentIdTemp

While @@Fetch_Status=0 Begin
    insert into @tablevar(col1) EXEC dbo.CalculateActualUpdateDate @InvestmentIdTemp
    UPDATE dbo.InvestmentData SET ActualUpdateDate =(SELECT TOP 1 col1 FROM @tablevar) WHERE InvestmentID=@InvestmentIdTemp

    delete @tablevar

    Fetch next From c into @InvestmentIdTemp
End

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