机房——存储过程的应用

目录

存储过程是什么?

使用存储过程有什么好处?

在机房中的应用是怎样应用的呢?

总结


存储过程是什么?

是一组为了完成特定功能的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)

 

总结

存储过程好似一块砖,哪儿需要就往哪儿搬,既方便用还不占地。

 

 

上一篇:mysql


下一篇:ibaits动态查询