sqlserver 2008存储过程 多个可空条件任意组合

王朝学院·作者佚名  2016-05-25
窄屏简体版  字體: 小  |  中  |  大  |  超大  

sqlserver 2008存储过程 多个可空条件任意组合 Posted on 2015-05-22 17:54 howking 阅读(...) 评论(...) 编辑 收藏很多程序员在实际开发中,经常遇到这种情况,列表上方有很多条件,包含下拉框,输入框等等,这些条件都可以不输入,如果我们需要写一个存储过程,很多条件挨个判断是否为空,且进行任意组合,任何一个开发人员都会疯的。闲话少说,接下来举例说明:

create PRoc myproc

@condition1 varchar(50)=null,

@condition2 int=null,

@condition3 bit

as

select col1,col2 from table

where col3=isnull(@condition1,col3)

and col4=isnull(@condition2,col4)

and col5=isnull(@condition3,col5)

以上代码中用到的ISNULL函数是sqlserver的内置函数,如果第一个参数为null,就会返回后面的值,如果where 后有col3=col3这样的东西,可能会影响一些效率,但是毕竟解决问题了。美中不足的是,这个内置函数只在2008(含)以上版本里有,用2005的,赶紧升级吧。

也有人在存储过程里拼接sql 字符串,然后使用exec来执行字符串,存储过程的优势就是其已经通过编译了,速度比较快,一旦用exec来执行字符串,仍旧会比较慢,因为数据库要先编译你的字符串。

以上是个人浅见,欢迎拍砖。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航