当存储过程中省略参数值时,希望它显示所有值

时间:2012-08-31 14:46:29

标签: sql-server-2005

在存储过程中,当未指定参数值时,我希望它显示列中所有值的结果。

我尝试了如下代码但是如果我在执行时将参数field1留空,则它不起作用并要求提供field1值。

create procedure procedurename
declare @startdate datetime, @enddate endtime, @field1 varchar(15)

select * from table1
where field1 = @xyz or @xyz is null
and date between @startdate and @enddate

execute procedurename @startdate = '01/07/2012', @enddate = '31/07/2012'

[我省略了field1值,因此它应该显示两个日期之间的field1列中所有值的结果] 但它要求参数值。

1 个答案:

答案 0 :(得分:2)

如果您要省略通话中的字段,则需要在程序声明中提供默认值。

create procedure procedurename (
    @startdate datetime, 
    @enddate endtime, 
    @field1 varchar(15) = NULL
)
AS
...