sql语句执行的时候要先编译,然后执行。存储过程就是编译好了的一些sql语句。程序需要用的时候直接调用就可以了,当存储过程执行一次后,可以将语句缓存,下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。
创建
以机房收费系统简单的登录为例
数据库中创建存储过程:
PROC_UserLogin
CREATE PROCEDURE[dbo].[PROC_UserLogin]
@userID varchar(50),
@userPasswordvarchar(50)
AS
BEGIN
select * from T_User where userID=@userID and userPassword=@userPassword
END
当然用户登录只需要一条sql语句,不能体现存储过程的优势,但在学生注册,结账等需要对多个表进行操作时,使用存储过程使系统的运行更有效率。
D层调用存储过程
''' <summary>
''' 查询用户名和密码,带参
''' </summary>
''' <param name="enUser">用户实体类</param>
''' <returns></returns>
''' <remarks></remarks>
Public Function SelectUserLogin(enUser As UserEntity) As DataTable Implements UserIDAL.SelectUserLogin
Dim sqlHelper As New SQLHelper.SqlHelper()
Dim strSQL As String
Dim paras As SqlParameter()
paras = New SqlParameter() {New SqlParameter("@userID", enUser.userID),
New SqlParameter("@userPassword", enUser.userPassword)}
'strSQL = "select * from T_User where userID=@userID And userPassword=@userPpassword"
strSQL = "PROC_UserLogin" '存储过程
Return sqlHelper.ExecSelect(strSQL, CommandType.StoredProcedure, paras)
End Function
存储过程的优点
存储过程的实质是部署在数据库端的一组定义代码以及SQL。
由此可见
存储过程增强了SQL语言的功能和灵活性:
当需求或规则发生变化时,不需要在程序中修改大量的语句,只需要在服务器端修改存储过程即可。
安全性和完整性:
可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。
可以使相关的数据库操作在一起发生,从而可以维护数据库的完整性。