gpt4 book ai didi

sql-server - SQL Server-如何将 'ALTER INDEX'与变量一起用作参数

转载 作者:行者123 更新时间:2023-12-04 00:10:35 26 4
gpt4 key购买 nike

使用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,但我宁愿不要,如果可以避免的话。

最佳答案

不幸的是,您试图做的事情是不可能的。我建议的最佳解决方法是将alter语句构建为字符串,连接语句中的变量,然后对其进行exec()

尝试这样的事情:

declare @alter varchar(200);
set @alter = 'ALTER INDEX ' + @IDXNAME + ' ON ' + @TABLENAME + ' SET (ALLOW_PAGE_LOCKS = ON)';

exec(@alter);

关于sql-server - SQL Server-如何将 'ALTER INDEX'与变量一起用作参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/656487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com