首页 新闻 会员 周边

SQL Server 如何处理参数?

1
[待解决问题]

一个功能页面,存在多个非必输查询栏位,则对应存储过程中,如何处理这部分变量条件,以保证查询的效能?

以下写法是否可行?

 1 SELECT 
 2     *
 3 FROM dbo.MRO_JobPRRecord PR
 4 LEFT JOIN dbo.MRO_JobPRDetailRecord PRD ON PR.PRSN = PRD.PRSN
 5 LEFT JOIN dbo.MRO_JobStatusQty SQ ON PRD.PRSN = SQ.PRSN AND PRD.PRItem = SQ.PRItem
 6 LEFT JOIN dbo.MRO_JobPRItemStatus PRIS ON SQ.PRSN = PRIS.PRSN AND SQ.PRItem = PRIS.PRItem
 7 WHERE PR.AreaID =@AreaID 
 8     AND PR.FactoryCode =@FactoryCode    
 9     AND PR.CompanyNo =@CompanyNo    
10     AND (@PRNO='' OR PR.PRNo = @PRNO)
11             
叶木木的主页 叶木木 | 菜鸟二级 | 园豆:252
提问于:2015-01-28 15:56
< >
分享
所有回答(4)
0

可以将where条件做为参数, 传进过程,  在存储过程里面拼接sql语句。 

但是要注意‘’号问题。 

问天何必 | 园豆:3311 (老鸟四级) | 2015-01-28 16:16
0

存储过程用if判断啊,为空则省略掉对应的条件

garry | 园豆:495 (菜鸟二级) | 2015-01-28 16:30
0

.net4.0已支持参数默认值

大志若愚 | 园豆:2138 (老鸟四级) | 2015-01-29 11:28
0

就如你最后一个条件

(@PRNO='' OR PR.PRNo = @PRNO)
(@PRNO is null or PR>PRNo = @PRNO)


 

.悟 | 园豆:213 (菜鸟二级) | 2015-06-04 22:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册