存储过程以根据参数获取所有结果数据

时间:2015-07-08 18:18:04

标签: sql sql-server stored-procedures

我想编写一个存储过程,如果我给出参数,那么它应该根据它查询它应该给我所有的结果

ALTER PROCEDURE [dbo].[Proc1] 
    @ID varchar(max) 
AS
BEGIN
    declare @sql varchar(max)
    set @sql = 'SELECT * from Table1
                WHERE (ID IN (' + @ID + '))'

    SET NOCOUNT ON;
    begin
       exec(@sql)
    end
END

当我传递2个参数时,它可以工作。当我传递1个参数时,它可以工作。

但我希望当我没有传递任何参数时,它会产生所有数据。

所以,我试过了:

 (ID IN ('+@ID+') or ('+@ID+')='''')

但它不起作用。

有人可以建议如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

当我编写存储过程时,我将值设置为触发该逻辑的默认值。因此,如果没有参数发送到存储过程,则该值将默认并触发逻辑,否则它将使用ID值。

ALTER PROCEDURE [dbo].[Proc1] 
    @ID varchar(max) = NULL -- Set the default here
AS
BEGIN

IF @ID IS NULL BEGIN 

-- Do the @ID value is not set logic here

END 
ELSE BEGIN 

-- Do the @ID value is set logic here 

END

这是微软对我在IF...ELSE (Transact-SQL)

所做的解释