存储过程是什么?
Procedure就是存储在数据库的一组为了完成特定操作的sql语句集合,它可以传入参数,进行操作。简单的说,就是存在数据库的sql语句,我们可以自由调用,即可完成sql功能。
_ueditor_page_break_tag_
有什么优点?
速度快,省流量。由于procedure是一次预编译的,执行一次供以后多次调用,速度快。
灵活。一些查询条件的变更,不需修改程序代码,改变参数和返回值除外。
还是有缺点的
如果项目庞大,存储过程很多,客户需求一直变化,修改起来麻烦。还有就是后期维护的话,也比较繁琐。
创建procedure:
CREATEPROCEDURE [dbo].[ChangeStatus](
@BsiStatus char(1)
)
As
Begin
--sql语句
End
修改procedure:
ALTERPROCEDURE [dbo].[ChangeStatus](
@BsiStatus char(1)
)
As
Begin
--sql语句
End
删除procedure:
drop procproc_get_student
定义参数:declare@Result char(1)
表连接修改:
updatea
seta.beforeIntent=b.Intent
frominf_business as a
innerjoin inf_business as b
onb.BusinessCode=a.beforebsicode
wherea.businesscode <> a.rootBsiCode
注意点:
If语句要加begin end
基础知识:
1.两个时间的天数差
datediff(day,getdate(),CrtEnd)<7
2.日期加一天
dateadd(day,1,CrtEnd)>getdate()
3.case when的使用
casewhen bsistatus='0' then 1 else 0 end
4. 判断字符串’345’中是否存在’3’
charindex(‘3’,'345')>0
5.获取当前时间的月份
Month(getdate())
技巧:
1.sql传参数条件
@typeint
whereenabled=1
and (@type!=1 or 1=1)
and (@type!=2 or bsistatus='0')