1 つの SQL パラメータで 3 つの潜在的な値が得られます
-
18-09-2019 - |
質問
私のストアド プロシージャでは、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) を返す場合は、別の話になるかもしれません...
所属していません StackOverflow