目录
存储过程是什么?
是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中。一次编译,永久有效
使用存储过程有什么好处?
重复使用,减少开发人员工作量
存储过程只需要在创建时进行编译,以后每次调用此存储过程都不需要在进行编译,而一般的SQL语句每执行一次就编译一次,所以使用存储过程可以提高数据库执行速度
在机房中的应用是怎样应用的呢?
小伙伴们,你们在敲机房时有没有过这样的疑惑?比如,很多窗体中都会用到查询student_Info表中cardno字段的SQL语句:
txtSQL="select * from student_Info where cardno= '" & txtcard.Text & "'"
每查询一次这样的SQL语句,都会很占用我们的内存,那有没有什么办法既能减少占用的内存又能减少这样的工作量呢?存储过程可以
实例应用,如下
第一步,在Microsoft SQL Server Management Studio 18中创建存储过程
create proc proc_student1
@cardno varchar(10)
as
select * from student_Info where cardno=@cardno
第二步,在VB6代码中调用
实例1.在充值窗体中:当点击确定时,需要判断输入的卡号是否在student_Info表中存在
'调用存储过程proc_student1,查询卡号
stxtSQL = "exec proc_student1 @cardno = '" & txtcard.Text & "'"
Set srst = ExecuteSQL(stxtSQL, smsgText)
'判断是否存在此卡号
If srst.EOF Then
MsgBox "此卡号不存在或已经不再使用!", 0 + 48, "温馨提示"
txtcard.Text = ""
txtcard.SetFocus
Exit Sub
Else
'更新student_Info表
end if
实例2,在注册窗体中的应用:当点击存盘按钮,判断输入的卡号是否在student_Info表中存在
’调用存储过程,查询卡号
txtSQL = "exec proc_student1 @cardno = '" & txtcard.Text & "'"
Set rst = ExecuteSQL(txtSQL, msgText)
’判断是否有重复卡号
If rst.EOF = False Then
MsgBox "卡号已存在,请重新输入卡号!", 0 + 48, "温馨提示"
txtcard.Text = ""
txtcard.SetFocus
Exit Sub
Else
看,在SQL Server中创建了一个存储过程,这么多窗体都可以调用它,是不是很方便呢?
那如果同时查询多个条件使用存储过程可不可以呢?答案绝对是可以的
实例:
在机房结账时,我们需要选择下拉框中的操作员或管理员对他们进行结账,在查询表时也就要查询相应操作员、管理员的用户id,并且没有结账的
在VB中是怎么样的呢?
'购卡
txtSQL = "select * from student_Info where UserID = '" & comboLavel.Text & "' and Ischeck = '" & "未结账" & "'"
Set rst = ExecuteSQL(txtSQL, msgText)
如果是使用存储过程是怎样的呢?
第一步:在SQL Server中编写创建语句
ALTER proc p_recharge
@userid int,
@status varchar(10),
as
select * from student_Info where UserID=@userid and status=@status
第二步:在VB中调用
txtSQL="exec p_recharge @userid= '" & comboLavel.Text & "' ,@status = '" & 未结账" "'"
set rst=ExecuteSQL(txtSQL, msgText)
总结
存储过程好似一块砖,哪儿需要就往哪儿搬,既方便用还不占地。