【发布时间】:2017-02-21 06:26:25
【问题描述】:
我是 SQL Server 的新手。
我有一张表 dbo.Example,它有 4 列,如下所示:
|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] 列中具有空值。
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 语句有问题,但我仍然很困惑。
我需要一个建议..
谢谢...
【问题讨论】:
标签: sql-server stored-procedures parameter-passing