我正在尝试根据参数从表中获取数据,
Declare @Loadtype varchar(10) = 'A'
Select *
from TableA (if @Loadtype = 'A')
Select *
from TableB (if @Loadtype = 'B')
Run Code Online (Sandbox Code Playgroud)
不知道我怎么能做到这一点。
非常感谢,乌代
您可以在两个表之间进行 UNION 并根据传递的参数修改 WHERE 子句(即,从两个表中进行 SELECT 并让参数决定是否返回任何行)。
或者您可以使用动态 SQL,即构建一个字符串并使用 sp_executesql 执行该字符串。使用动态 SQL 之前需要阅读的是http://www.sommarskog.se/dynamic_sql.html。Erland 甚至有一个关于这个特殊要求的部分。
而且,您当然可以有一个 IF 并执行两个单独的 SELECTS,其中一个取决于变量的内容。
老实说,上面的“解决方案”很糟糕。我建议你退后一步,看看更广阔的画面。
并明确表示:在 DML 命令中不能有表名的变量或参数。