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语言的功能和灵活性:

当需求或规则发生变化时,不需要在程序中修改大量的语句,只需要在服务器端修改存储过程即可。

安全性和完整性:

可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。

可以使相关的数据库操作在一起发生,从而可以维护数据库的完整性。