【问题标题】:How to return an empty result set if parameter is left blank when exec stored procedure? (SQL Server)如果执行存储过程时参数留空,如何返回空结果集? (SQL 服务器)
【发布时间】: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


【解决方案1】:
---Try this it's Might work for you
-- SET @char NULL If it's '____' 

    DECLARE @char VARCHAR(MAX) = '____'

        IF @char ='____' 
        SET @char= NULL

        SELECT * 
        FROM Table1 
        WHERE column= @char

【讨论】:

    猜你喜欢
    • 2023-03-24
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多