很多程序员在实际开发中,经常遇到这种情况,列表上方有很多条件,包含下拉框,输入框等等,这些条件都可以不输入,如果我们需要写一个存储过程,很多条件挨个判断是否为空,且进行任意组合,任何一个开发人员都会疯的。闲话少说,接下来举例说明:
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来执行字符串,仍旧会比较慢,因为数据库要先编译你的字符串。
- 本文固定链接: https://www.zxbcw.cn/post/3382/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)