sql-server 返回SP中的单个或多个记录

fjnneemd  于 2022-10-31  发布在  其他
关注(0)|答案(2)|浏览(144)

我有一个SP,它有一个参数@itemCode。如果参数的值为NULL,SP应该返回表中的所有项目记录,如果参数有值,SP应该只返回相应的itemcode记录。这是我写的:

SELECT
    itemCode
    , itemName
FROM itemTable
WHERE itemCode IN (ISNULL(@itemCode, (SELECT itemCode FROM itemTable)))

查询返回下面的错误消息,不确定原因,因为我已经在WHERE子句中使用了itemCode IN而不是itemCode =。我使用的是SQL Server。
有谁能提出问题或给予任何替代的解决方案吗?谢谢。

mspsb9vt

mspsb9vt1#

我找到了一个解决方案,但不确定这是否是一个完美的解决方案。只是在WHERE子句下面进行了更改

WHERE itemCode LIKE (ISNULL(@itemCode, '%'))
3z6pesqy

3z6pesqy2#

只要使用OR逻辑,几乎是你的解释的直接翻译,例如。

SELECT
    ItemCode
    , ItemName
FROM ItemTable
WHERE ItemCode = @ItemCode OR @ItemCode IS NULL;

相关问题