在存储过程中通过args过滤

Kyl*_*mas 5 sql visual-studio-2015

我的代码有问题:P显然对吗?!无论如何...这就是它...它想要一个STORED PROC,它需要3个args(@ cat,@ cutPrice,@ option)并返回多个类似于@cat的结果,并且价格是<或> @cutPrice取决于@option关键字'above'或'below'.问题是当我执行这个...

EXEC spBookByPrice  
@cat = 'business', @cutPrice = 0.00, @option = 'above'  
Run Code Online (Sandbox Code Playgroud)

...我没有结果,但@option =''显示所有价格.无论如何这里是我的代码....

ALTER PROC spBookByPrice
@cat varchar(12), @cutPrice money, @option varchar(5)
AS
BEGIN
    SELECT
    title AS 'Title:',
    type AS 'Category:',
    price AS 'Price:',
    CASE 
        WHEN price >= @cutPrice THEN 'above'
        WHEN price < @cutPrice THEN 'below'
        --ELSE NULL
    END AS 'Option:'
    FROM dbo.titles
    WHERE 'Option:' LIKE '%' + @option + '%'
    GROUP BY type, title, price
    HAVING type LIKE '%' + @cat + '%'
END
Run Code Online (Sandbox Code Playgroud)

Gur*_*ngh 2

这是您需要的吗:

ALTER PROC spBookByPrice
@cat varchar(12), @cutPrice money, @option varchar(5)
AS
BEGIN
    SELECT
    title AS [Title:],
    type AS [Category:],
    price AS [Price:],
    CASE 
        WHEN price >= @cutPrice THEN 'above'
        WHEN price < @cutPrice THEN 'below'
        --ELSE NULL
    END AS [Option:]
    FROM dbo.titles
    WHERE (CASE WHEN price >= @cutPrice THEN 'above'
                WHEN price < @cutPrice THEN 'below'
            --ELSE NULL
            END) LIKE '%' + @option + '%'
    GROUP BY type, title, price
    HAVING type LIKE '%' + @cat + '%'
END
Run Code Online (Sandbox Code Playgroud)