Используя T-SQL, я обнаружил, что не могу использовать 'ALTER INDEX' со значениями таблицы / индекса в переменных без получения синтаксической ошибки. Есть ли способ сделать это? Я на SQL Server 2005.
Мой код выглядит так:
DECLARE @TABLENAME VARCHAR(256)
DECLARE @IDXNAME VARCHAR(256)
DECLARE @SCHEMAID INT
SET @TABLENAME = 'T1'
SET @IDXNAME = 'T1_IDX0'
-- The next line is OK as it hardcodes the variable names
ALTER INDEX T1_IDX0 ON T1 SET (ALLOW_PAGE_LOCKS = ON)
-- The next line generates a syntax error
ALTER INDEX @IDXNAME ON @TABLENAME SET (ALLOW_PAGE_LOCKS = ON)
Синтаксическая ошибка выглядит следующим образом:
Msg 102, Level 15, State 1, Line 7
Incorrect syntax near '@IDXNAME'.
Msg 156, Level 15, State 1, Line 7
Incorrect syntax near the keyword 'SET'.
Реальный код, над которым я работаю, более сложный, чем описанный выше, и возможность использования переменных была бы полезной. Я думаю, что одним из способов было бы использовать динамический SQL, но я бы предпочел не делать этого, если бы мог избежать этого.