读书人

存储过程 参数有关问题

发布时间: 2012-03-22 17:43:57 作者: rapoo

存储过程 参数问题
我想用一个带参数的存储过程执行一系列查询,但这些参数是不固定的,也就是说有些参数在没有提供的情况下是查询所有,而给出的参数必须按要求查,不知道大家明白我的意思没?这种情况怎么实现?

[解决办法]
可以入null值

然後在存程中判是否null再作相理

不如果多的需要判的情也比多
[解决办法]
这样?
@a int=null,@b varchar(2)=null
select * from t where a=isnull(@a,a) and b=isnull(@b,b)
[解决办法]
存储过程中的参数是可以有默认值的

如果我要写一个查询员工编号的存储过程
create procedure QueryEmpno
@empno varchar(10) ' ' --默认值 ' '
as
if (@empno = ' ')
select * from HumanResources.Employee
else
select * from HumanResources.Employee where EmployeeID = @empno
end

--LZ要的是不是这样的情况,当我传了参数
exec QueryEmpno '25 '

--没参数查询所有的
exec QueryEmpno
[解决办法]
select * from t where a=isnull(@a,a) and b=isnull(@b,b)

@anull值,那isnull(@a, a)的返回值a,此件成了a=a

@a不null值,isnull(@a, a)返回值@a,此件成了a=@a

@b同理

所以@a和@b同null,件就是a=a and b=b,得到的果集select * from t是完全一的

@anull,@b不null,件就是a=a and b=@b,此果集select * from t where b=@b完全一

其他情同理

解能懂了吧
[解决办法]
hb_gx(高升)正解,应当没有更多可以偷懒的办法了,用默认值是最简便的方法,写起来也没那么复杂,只不过是在定义的时候多写个等号而已

读书人网 >SQL Server

热点推荐