【问题标题】:SQL Server stored procedure optionally return all records or filter based on parameterSQL Server 存储过程可选择返回所有记录或根据参数进行筛选
【发布时间】:2020-10-23 12:32:33
【问题描述】:

我有一个存储过程,它通过向其传递参数来返回数据,类似于:

CREATE PROCEDURE MySP (@ID VARCHAR(50))
AS
BEGIN
    SET NOCOUNT ON
  
    SELECT *
    FROM mytable t
    WHERE t.ID = @ID
END

我需要有这个选项,如果不传递参数,存储过程将返回所有记录,同时通过传递参数来获取特定记录。

我想知道我的存储过程应该如何修改?感谢大家的帮助!

【问题讨论】:

  • 查看this answer 或使用IFBEGINEND 作为过滤器/开关
  • t.ID = @ID or @ID is null

标签: sql sql-server


【解决方案1】:

尝试类似(未测试):

CREATE PROCEDURE MySP (@ID VARCHAR(50))
AS
BEGIN
SET NOCOUNT ON
IF @ID = '' OR @ID IS NULL
BEGIN
    SELECT *
    FROM mytable t
END
ELSE
BEGIN
    SELECT *
    FROM mytable t
    WHERE t.ID = @ID
END
 
END


【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-25
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多