题
在我的存储过程中,我需要一个参数来提供 3 个可能的值。
所以我可以做类似的事情:
@p1 <-- my parameter
IF (@p1 ???) -- include users
SELECT * FROM USERS
IF (@p1 ???) -- include employees
SELECT * FROM employees
IF (@p1 ???) -- iclude customers
SELECT * FROM CUSTOMERS
我猜我将不得不做一些事情,但不知道如何在 sql 中做到这一点。
更新
我实际上正在做某种联合。
解决方案
如果@p1是一个int,或者它的一些变体,比如bigint或tinyint,你可能可以使用按位与。
这是一个例子:
IF ( @p1 & 1 = 1)
IF ( @p1 & 4 = 4)
其他提示
通常,您最好创建单独的存储过程并调用它们,而不是内联 T-SQL。
这是因为每批只有一个缓存的查询计划。
还, ,请注意 Remus 的评论:你违反了单一责任规则。这使得维护容易出错。
如果您总是返回相同的多个结果集(MARS),情况可能会有所不同......
不隶属于 StackOverflow