【个人学习笔记17之--存储过程浅谈】

这次讲得是 存储过程(proc)

 

存储过程分类:
1.用户自定义存储过程:
分成 TRANSACT-SQL存储过程和CLR存储过程
2.拓展存储过程(后续版本将删除这个,所以避免使用它了,用clr替代)
3.系统存储过程物理意义上讲,系统存储过程存储在源数据库中,并且带有 sp_ 前缀。
从逻辑意义上讲,系统存储过程出现在每个系统定义数据库和用户定义数据库的 sys 构架中。

 

存储过程的优点:
1.执行速度更快。

 有两个原因:首先,在存储过程创建的时候,数据库已经对其进行了一次解析和优化。
 其次,存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用
2.存储过程允许模块化程序设计。
 当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量
4.安全性高。
可设定只有某此用户才具有对指定存储过程的使用权。这里赋予的是对存储过程的权利,不是对存储过程里面的内部对象的权利
例;你要赋予PROC_s 的执行权利,但是不准用户user1有 PROC_S里面的k表的权限
   exec deny select on k to user1
   exec grant execute on PROC_S to user1
5.减少网络通信量。
 调用一个行数不多的存储过程与直接调用SQL 语句的网络通信量可能不会有很大的差别,
 可是如果存储过程包含上百行SQL 语句,那么其性能绝对比一条一条的调用SQL 语句要高得多。
6.布式工作.
应用程序和数据库的编码工作可以分别独立进行,而不会相互压制。

 

 

存储过程的规则:(更多参考MSDN)
1.不要在主体重包含一些DML语句,比如 create(alter ) default,function,view,trigger ,SET SHOWPLAN_XML等等
2.其他数据库对象均可在存储过程中创建。 可以引用在同一存储过程中创建的对象,只要引用时已经创建了该对象即可。
3.可以在存储过程内引用临时表。
4.存储过程中的参数的最大数目为 2100
5.根据可用内存的不同,存储过程最大可达 128 MB。
6.数据库引擎将保存 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 的设置。在存储过程中出现的 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 语句不影响存储过程的功能。

 

 

存储过程的参数:
1.参数按方向分2种: in->传入内部; out->传入内部和传出外部
当用In类型的时候,参数一般用作条件供内部使用,
当用Out类型的时候,参数一般是用作返回值传给应用程序的,在定义时候用output指定.


a.这里有个地方,当你的output参数传入后如果在pro

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值