我在存储过程中放入的参数数量存在问题。 我正在使用季度数据自动化报告(参数格式= 2012Q1,2012Q2,等等) 如果用户的第一个参数以Q1,Q2或Q3开头,则只有3年的数据,因此如果用户的第一个参数是2012Q1,2012Q2或2012Q3,则参数将在2014Q4结束....参数数量将是不同的,因为它需要2012Q1-2012Q4的12个参数,2012Q2-2014Q4的11个参数和2012Q3-2014Q4的10个参数。
是否可以根据用户的第一个参数更改声明的参数数量?有没有一个好方法来解决这个问题?
答案 0 :(得分:3)
不可能,但是您可以让参数的默认值为NULL,现在不需要传入值。
例如
create procedure prTest
@i int = null, @i2 int = null
as
select @i,@i2
go
exec prTest 1 --just pass 1 parameter, 2nd is default
go
exec prTest -- leave all as default
go
exec prTest @i2 = 5 --to pass in a param if it is not 1st, use names
go
exec prTest null,5 --same as above
另请参阅:Optional and named arguments in C# a comparison with SQL Server stored procs
不是这样做,为什么不使用开始日期和结束日期,还是可以选择多年来的特别季度?
答案 1 :(得分:1)
我认为你可以通过两个参数来极大地简化事情。第一个将指定搜索周期的开始,第二个将指定结束。无论这些是日期,年月还是期间名称都可以解决,