在我的存储过程中,我需要一个参数来提供 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),情况可能会有所不同......

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top