Select 变量动态值

Select variable dynamic value

(我已经声明了变量)

我有以下查询

select @VCOUNT = count(1) from @TMP_NAME||'TAB1'||@TIME 

出现以下错误

Incorrect syntax near '@TMP_NAME'

tmp_name和时间是动态的。

查询是这样的并且有效:

select @VCOUNT = count(1) from tab1

如何向 select 变量添加动态?

将整个 select 语句转换为包含 Sql 的字符串,例如@Sql

select @Sql = 'select @VCOUNT = count(1) from ' + @TMP_NAME + 'TAB1' + @TIME 

然后使用 EXEC 进行动态 sql:

EXEC(@Sql)

@VCOUNT 将在动态 sql 内设置,并将在动态语句外可用。

由于它是动态的,如果它在 SP 中,您将无法享受此语句的存储查询计划的好处,但这可能并不重要,具体取决于情况。