1
私はSQL Serverで新人です。null値を持つパラメータを含むストアドプロシージャを作成します。
私はこのような4列有するテーブルdbo.Example
有する:
|Barcode|Goods | Stock | Person |
-----------------------------------------
|0020307|Book |Available | Mike |
|0090010|Table |NULL | Jane |
|0140397|Chalk |NULL | Mike |
|0190017|Glass |NULL |Christoper|
|0080017|Hammer|Available | Ron |
それは[Stock]
列のNULL値を持つパラメータでストアドプロシージャを作成しようとします。
CREATE PROCEDURE examproc
@person NVARCHAR(50) = NULL,
@stock nvarchar(50) = NULL
AS
SELECT *
FROM dbo.Example
WHERE person = ISNULL(@person, person)
AND Stock = ISNULL(@stock, Stock) OR Stock IS NULL
とパラメータを次のように手順を実行します。
EXEC examproc @person = 'Mike'
しかし、結果は私が期待したものではありません。
|Barcode|Goods | Stock | Person |
-----------------------------------------
|0020307|Book |Available | Mike |
|0090010|Table |NULL | Jane |
|0140397|Chalk |NULL | Mike |
|0190017|Glass |NULL |Christoper|
私は私のSQL文を使用すると、何かが間違っている知っています、私はまだ混乱しています。
CREATE PROCEDURE examproc
@person NVARCHAR(50) = NULL,
@stock nvarchar(50) = NULL
AS
SELECT *
FROM dbo.Example
WHERE person = ISNULL(@person, person)
AND (Stock = ISNULL(@stock, Stock) OR Stock IS NULL)
とあなた: - 私は提案を必要とする
..
おかげで...あなたはWHERE
句でAND
とOR
を混合する際に、超注意する必要があります
ありがとうございました!できます... –