【发布时间】:2018-01-17 05:16:48
【问题描述】:
我目前正在使用此代码:
CREATE PROCEDURE Test
@char VARCHAR(MAX) = ____
AS
SELECT *
FROM Table1
WHERE column ___ = @char + _____
而且我需要这样做,如果用户在没有参数值的情况下执行存储过程,它应该返回一个空的结果集。如果他们提供了一个值,那么它会返回所提供值的结果集。
我将如何填补这些空白?
我想出了如何做到这一点,但它需要我更改代码,所以我的方式是:
CREATE PROCEDURE Test
@char VARCHAR(MAX) = NULL
AS
SELECT *
FROM Table1
WHERE column = ISNULL(@char, NULL)
我相信这种方式可行,但问题要我按照他们的方式去做,有谁知道如何按照问题的结构来做?
感谢您的帮助!
【问题讨论】:
-
如果你让参数可以为空,上面的代码已经做到了
-
最好使用 if else 条件来检查参数值。
-
有谁知道如何处理问题的结构你能改述一下吗?还有
ISNULL(@char, NULL)这只是意味着更少 -
我知道还有其他方法可以做到这一点,但它希望我按照问题提供的方式去做。所以必须在@char + 之后加上 ___ = 列之间的东西
-
这似乎是另一个没有真正目的且无法正常工作的荒谬学术问题。
column后面的空格是什么意思?除了>之外,我想不出任何可以在列和=运算符之间插入的有效SQL。如果第一个空格是NULL,最后一个空格是'',它可能会起作用,但同样,这是无稽之谈
标签: sql sql-server database stored-procedures