如何根据参数更改from子句中的表名?

时间:2017-10-04 10:37:03

标签: sql sql-server

在select语句中,在from子句中,表名会根据参数而更改。 我试过了:

from
IIf(@prmdataVal ='Dummy', tbl1, tbl2) T1

显示错误。这该怎么做?

2 个答案:

答案 0 :(得分:2)

尝试以下内容:

DECLARE @stmt nvarchar(max);
SELECT @stmt = 'SELECT * FROM ' + CASE WHEN @prmdataVal = 'Dummy' THEN 'tbl1' ELSE 'tbl2' END
EXEC @stmt

答案 1 :(得分:0)

声明表名的变量,然后在动态SQL的from子句中调用它,工作。

Declare @TblName AS SYSNAME = CASE WHEN @prmdataVal='Dummy' THEN 'tbl1'
ELSE 'tbl2' end

然后在动态sql中调用它:

from '+@TblName +' as T1...