0

以下に示すように、ストアドプロシージャにクエリがあります

select empid 
from tblname 
where place = @place 
and category = @category  

これと同じ手順を使用して、place ='calicut'(カテゴリは任意)のすべての結果を取得したいと思います。これを行うことにより、query選択したカテゴリが私ので「すべて」である場合に、別々に書くことを避けることができますdropdownlist

4

3 に答える 3

2
SELECT empid 
FROM tblname 
WHERE place = @place 
AND (category = @category OR @category = 'all');
于 2013-03-25T15:07:42.937 に答える
1

NULLをチェックできるはずです。これは、デフォルトの「すべて」の値が選択されているときにNULLを渡すことを前提としています。そうでない場合は、NULLをSPに渡すすべてまたは任意の値に置き換えます。

select empid 
from tblname 
where place=@place and 
    (@category IS NULL OR category=@category)

これにより、@ categoryパラメータがチェックされます。NULLの場合は、任意のカテゴリが選択されます。それ以外の場合は、その特定のカテゴリを検索します。

そして、place ='calicut'の場所だけを気にする場合は、代わりにこれを使用してください。

select empid 
from tblname 
where place='calicut' and 
    (@category IS NULL OR category=@category)
于 2013-03-25T15:07:42.670 に答える
1

もう1つできることは、@categoryを書き込んでいる間に変数を初期化することですstored procedure

ALTER PROCEDURE yourProcName 
   @place VARCHAR(100), 
   @category VARCHAR(50) = ''
AS
BEGIN

  select empid 
  from tblname 
  where place = @place 
  and 
  (@category = '' OR category  = @category)

END
于 2013-03-25T15:15:09.310 に答える