首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当SPROC变量为NULL时返回所有值

当SPROC变量为NULL时返回所有值
EN

Stack Overflow用户
提问于 2015-05-02 13:44:58
回答 3查看 52关注 0票数 0

是否有任何方法从下面返回“所有”类别,只需将SPROC输入变量保留为完全空白?

澄清-甚至不用“”

代码语言:javascript
复制
CREATE TABLE Levels (ID INT PRIMARY KEY
                    ,Value INT 
                    ,Category VARCHAR(10))

INSERT INTO Levels VALUES(1, 30, 'High') 
                        ,(2, 20, 'Medium') 
                        ,(3, 10, 'Low') 
GO

CREATE PROC LevelValues @Category VARCHAR(10)
AS
BEGIN
SELECT * 
FROM Levels
WHERE Category = CASE @Category WHEN '' THEN Category ELSE @Category END
END
GO

EXEC LevelValues ''
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-03 07:45:31

我认为您希望在不向参数传递任何值的情况下使用SP:

代码语言:javascript
复制
CREATE PROC LevelValues @Category VARCHAR(10) = ''
AS
BEGIN
SELECT * 
FROM Levels
WHERE Category = CASE @Category WHEN '' THEN Category ELSE @Category END
END
GO

EXEC LevelValues 
票数 1
EN

Stack Overflow用户

发布于 2015-05-02 13:47:03

代码语言:javascript
复制
CREATE PROC LevelValues @Category VARCHAR(10)
AS
BEGIN
SELECT * 
FROM Levels
WHERE Category = @Category OR @Category = ''
END

在您的评论之后,这里有另一个解决方案:

代码语言:javascript
复制
CREATE PROC LevelValues @Category VARCHAR(10)
AS
BEGIN

IF @Category = ''
    SELECT * 
    FROM Levels
ELSE
    SELECT * 
    FROM Levels
    WHERE Category = @Category    
END
票数 2
EN

Stack Overflow用户

发布于 2015-05-02 13:47:23

我推荐这样的东西

代码语言:javascript
复制
SELECT * FROM Levels WHERE Category = @Category OR @Category = ''

这将在输入为空时返回所有记录。

否则

代码语言:javascript
复制
SELECT * FROM Levels WHERE Category = @Category OR @Category = NULL
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30003024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档