質問

私のストアド プロシージャでは、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を実行しています。

役に立ちましたか?

解決

もし@ p1は、おそらくビット単位とを使用することができ、int型、またはBIGINTまたはtinyint型のような、それのいくつかの変種である。
ここでは例があります:

IF ( @p1 & 1 = 1)
IF ( @p1 & 4 = 4)

他のヒント

多くの場合、T-SQL をインラインで使用するよりも、別のストアド プロシージャを作成して呼び出した方がよいでしょう。

これは、バッチごとにキャッシュされたクエリ プランが 1 つだけであるためです。

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

常に同じ複数の結果セット (MARS) を返す場合は、別の話になるかもしれません...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top