Sql 基于参数获取所有结果器数据的存储过程
我想写一个存储过程,如果我给出参数,那么它应该基于这个参数进行查询,否则它应该给出所有结果Sql 基于参数获取所有结果器数据的存储过程,sql,sql-server,stored-procedures,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
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
当我传递两个参数时,它就工作了。当我传递1个参数时,它工作
但我希望,当我不传递任何参数时,它将生成所有数据
所以,我试着:
(ID IN ('+@ID+') or ('+@ID+')='''')
但它不起作用
有谁能建议如何解决这个问题吗?当我编写存储过程时,我将该值设置为触发该逻辑的默认值。因此,如果未向存储过程发送任何参数,则该值将默认并触发逻辑,否则将使用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
这是微软对我当时所做的解释