0

在我的存储过程中,我需要一个参数,它会给我一个潜在的 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 中做到这一点。

更新

我实际上正在做一个 UNION。

4

2 回答 2

2

您通常最好创建单独的存储过程并调用它们,而不是使用 T-SQL 内联。

这是因为每批只有一个缓存查询计划。

另外,请注意 Remus 的评论:您违反了单一职责规则。这使得维修容易出错。

如果您总是返回相同的多个结果集 (MARS),情况可能会有所不同......

于 2009-11-07T03:32:39.400 回答
1

如果@p1 是一个int,或者它的一些变体,比如bigint 或tinyint,你可以使用按位与。
这是一个例子:

IF ( @p1 & 1 = 1)
IF ( @p1 & 4 = 4)
于 2009-11-07T03:22:51.993 回答