一个简单的参数化存储过程

时间:2018-02-11 17:42:41

标签: sql sql-server stored-procedures

我需要一个非常简单的存储过程,假设我们在表中有一些员工数据。其中一列包含NickName名员工。 NickName列是可空的,例如我们有10条记录,7名员工有昵称,而其他3则为空。我想传递NickName的参数;如果我在参数中传递值,则应根据参数值返回数据,如果不在参数中传递任何值,则应显示所有10条记录,表示应显示NickName和空值记录。

以下存储过程运行良好,但它不会返回具有NULL值的行:

    @name VARCHAR(30) = NULL
AS
BEGIN
    SET NOCOUNT ON;

    SELECT * 
    FROM Emp 
    WHERE NickName = ISNULL(@name, NickName)
END

如果有人回答,我将非常感激。

2 个答案:

答案 0 :(得分:1)

@name varchar(30)= NULL
AS
BEGIN

SET NOCOUNT ON;
SELECT * from Emp where NickName IS NULL OR NickName  = @name
end

答案 1 :(得分:1)

你可以尝试类似下面的内容

@name varchar(30)= NULL
AS
BEGIN

SET NOCOUNT ON;
SELECT * from Emp where ISNULL(NickName,'') = COALESCE(@name,Nickname, '')
end
相关问题