存储过程参数为空时从表中选择

时间:2014-07-23 14:33:00

标签: sql-server tsql

正如我的标题所示,我有一个存储过程查询,我传入一个参数,它根据该参数返回数据。但是,如果我传递一个空白,我希望返回表中的所有内容。

我发布了一些代码,如你所见.... @id参数只选择那个ID正确但我想知道我应该添加(或删除)的内容,所以如果这个参数是空白一切都归来了。

谢谢

CREATE PROCEDURE [dbo].[select_stuent]
    @id varchar(25)
AS
    CREATE TABLE dbo.#usp_holder (name varchar(25),
                                  id char(5),
                                  class varchar (25),
                                  grade numeric(5)
                                 )


    INSERT INTO #usp_ holder (name, id, class)
        SELECT 
            name, id, class
        FROM
            dbo.classmaster 
        INNER JOIN 
            dbo.classtypes ON classmaster.type = classtypes.type
        WHERE 
            classmaster.id = @id;

1 个答案:

答案 0 :(得分:1)

试试这个:

CREATE PROCEDURE [dbo].[select_stuent]
@id varchar(25)
AS

CREATE TABLE dbo.#usp_holder
(
name  varchar(25),
id char(5) = null,
class varchar (25)
)

您可能需要添加其他条件来检查输入是empty string还是null。像这样:

IF (@id = '')
BEGIN
SET @id = null
END

INSERT INTO 
#usp_ holder (name,id,class
)
Select name,id,class
from dbo.classmaster 
inner join dbo.classtypes
on classmaster.type= classtypes.type
WHERE classmaster.id = ISNULL(@id, classmaster.id)