プロシージャのWHERE部分にオプションのパラメータを持つストアドプロシージャを作成したいとします。私のC#コードは、このprocのnullまたは有効なプロダクトIDを渡すことができます。ここにあります:SQL ServerでオプションのNULLパラメータを含める方法
declare @ProductID int
set @ProductID = null
select
*
from
Products
where
Name like '%Hasbro%'
if @ProductID is not null
begin
and ProductID = @ProductID
end
このコードは機能しません。製品IDがヌルの場合は、「Hasbro」という名前の製品のみを検索します。製品IDがヌルでない場合は、名前に「Hasbro」という名前の製品を探し、一致する製品IDを探します。
ありがとうございます!
更新日:
ここに作業コードがあります。これを手伝ってくれてありがとうございました! @ProductID
が省略されている場合
declare @ProductID int
set @ProductID = null
select
*
from
Products
where
Name like '%Hasbro%'
and ((@ProductID is null) or (@ProductID is not null and ProductID = @ProductID))
これは完全に機能しました!ありがとうございました! – Halcyon
これは次のように簡略化できます。(@ProductIdはNULLかProductId = @ProductId) –