【机房重构】存储过程
2016-04-10 21:19
316 查看
定义
存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
依照小编的理解,存储过程是一个很省事儿的模块,使用SQL语句和流程控制语句编写的模块,就相当于我们在学习VB中类模块,把它放在一个地方,每次等到大家都来取用它,减少代码的复用。
优点
提供了安全机制。村粗过程提供的安全机制可以只给用户授予访问存储过程的权限,而不授予用户访问存储过程中涉及到的表或视图的权限,从而保证数据库中数据的安全性。改进执行性能。存储过程在第一次执行后,会在SQL server的缓冲区中创建查询树,这样在第二次执行该存储过程时,就无须进行预编译,从而改进系统的执行性能。减少网络流量。存放在服务器上的预先编译好的SQL语句组并在服务器端运行,这样使用存储过程时,在服务器和客户端之间网络上需要传输的只有用来执行存储过程的命令和存储过程执行完毕后返回的结果,用户无须在网络上发送上百个SQL语句,或是将众多数据从服务器端下载至客户端后再进行处理,从而大大减少了网络负载。增强了代码的重用性,提高开发效率。实例
USE [JFCharge] GO /****** Object: StoredProcedure [dbo].[pro_selectUser] Script Date: 2016/4/30 20:18:14 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ================================================ -- Template generated from Template Explorer using: -- Create Procedure (New Menu).SQL -- -- Use the Specify Values for Template Parameters -- command (Ctrl-Shift-M) to fill in the parameter -- values below. -- -- This block of comments will not be included in -- the definition of the procedure. -- ================================================ --SET ANSI_NULLS ON --GO --SET QUOTED_IDENTIFIER ON --GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= ALTER PROCEDURE [dbo].[pro_selectUser] -- Add the parameters for the stored procedure here @userID char(11), @passWord char(15), @userName char(15), @userLevel char (15), @Head char (15), @Status bit AS BEGIN declare @error int set @error=0 begin transaction -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. insert into User_Info(userID,passWord,userName,userLevel,Head,Status) values(@userID,@passWord,@userName,@userLevel,@Head,@Status) set @error=@error+@@ERROR -- Insert statements for procedure here --SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2> if @error<>0 rollback transaction --如果不等于0,则回滚事务,不能执行 else commit transaction --等于0,则执行该事务 END
相关文章推荐
- 020.php
- 20160410】嗯……省选两日游完了抒发一下感想 (讲道理这里可以抒情?【SCOI2016
- 【Trie】[CQOI2016]路由表
- samba服务器搭建
- 如何用netstat命令查看端口占用问题的技巧
- [架构]我眼中的Android架构
- Android学习(19) -- 数据存储之File (简单登录保存用户名和密码)
- sizeof()用法汇总
- Java NIO系列教程(二) Channel
- Servlet技术
- atitit.React 优缺点 相比angular react是最靠谱的web ui组件化方案了
- 019.php函数变量
- java中对象的比较
- UBUNTU 修改网卡名称 更改设备网卡名称 修改ENO16777736为ETH0 UBUNTU 15.10网卡名称为ENO16777736(http://www.cnphp6.com/archiv)
- atitit.React 优缺点 相比angular react是最靠谱的web ui组件化方案了
- 四则运算安卓
- DotNet 资源大全
- 架构高性能网站秘笈(一)——了解衡量网站性能的指标
- hdu 1016 Prime Ring Problem(dfs)
- yii 查询构建器