在机房收费系统中“结账”窗体中有这样一个需求:点击“结账”按钮以后需要将数据库中,与已经选择的操作员用户名有关的所有充值记录、退卡记录、售卡记录中的"isCheck"字段的未结账变成已结账。
这整个的操作过程说的直白一点就是更新数据库中三个表的数据。以前在学习数据库的时候就接触过存储过程,而这个需求就完全可以封装为一个存储过程:
代码如下:
Creat PROCEDURE [dbo].[Pro_alterIscheck]
-- Add the parameters for the stored procedure here
@UserIDstr varchar(10)
AS
BEGIN
update Card_Info set isCheck='已结账' where userID=@UserIDstr and isCheck ='未结账'
update Recharge_Info set isCheck='已结账' where userID=@UserIDstr and isCheck ='未结账'
update CancelCard_info set isCheck='已结账' where userID=@UserIDstr and isCheck ='未结账'
END
通过这个需求实例的联系自己运用到了数据库的存储过程,现在把它总结一下。
存储过程是在数据库中,一组为了完成特定功能的sql语句集,经过编译存储数据库中,用户通过指定存储过的名字并给出参数,来执行它。
存储过程具有很重要的作用,无论是在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是sql语句和流程控制语句的集合。就本质而言触发器是一种存储过程,存储过程在运算是生成执行方法。所以以后对器运行时执行速度很快。
语法格式:
CREATE PROCEDURE [拥有者.]存储过程名[;程序编号] sql中的存储过程及相关介绍
[(参数#1,…参数#1024)]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
]
[FOR REPLICATION]
AS 程序行
自己理解的存储过程
结合网上的概念,和自己的理解,存储过程更像在vb.net中写的一个函数,传入参数就能去执行一系列的操作,返回一个值(或者没有返回值)。
比如自己写的判断文本框是否为空的函数:
Public Module isNulltext
Public Function isNull(txtBox As TextBox, msgStr As String) As Boolean
If Trim(txtBox.Text) = "" Then
MsgBox("请输入" + msgStr, vbOKOnly, "温馨提示")
txtBox.Focus()
Return True
Else
Return False
End If
End Function
End Module
传入参数后,就能直接传出文本框内是否为空,并给出相应的提示。而同样的存储过也是一样的。当传入参数后,经过一系列的sql语句,就能得到自己想到的结果。这样大大的减少了在程序编程中对于数据库的操作。而且将其封装成一个存储过程,更方便程序的调用,和对数据库操作语句的修改。