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 をインラインにするよりも、別のストアド プロシージャを作成して呼び出したほうがよいでしょう。

これは、バッチごとにキャッシュされたクエリ プランが 1 つしかないためです。

また、Remus のコメントに注意してください。あなたは単一責任規則に違反しています。これにより、メンテナンス エラーが発生しやすくなります。

常に同じ複数の結果セット (MARS) を返す場合は、別の話になる可能性があります...

于 2009-11-07T03:32:39.400 に答える
1

@p1 が int であるか、bigint や tinyint のようなその変形である場合、おそらくビット単位の and を使用できます。
次に例を示します。

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