第一次机房收费系统——存储过程的应用

简介: 存储过程只需要在创建时进行编译,以后每次调用此存储过程都不需要在进行编译,而一般的SQL语句每执行一次就编译一次,所以使用存储过程可以提高数据库执行速度

存储过程是什么?


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


       20200525224213312.png                    


 '调用存储过程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表中存在


20200525224919332.png 

’调用存储过程,查询卡号
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,并且没有结账的


 20200530113821395.png      


在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)


总结


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

相关文章
|
存储 SQL 安全
【数据库原理及应用】创建与使用存储过程
主要是创建简单存储过程,游标的存储过程及创建和使用事务
468 0
|
1月前
|
存储 SQL
物料清单应用输入模板的SQL存储过程设计
物料清单应用输入模板的SQL存储过程设计
|
4月前
|
存储 SQL 数据库
数据库第十二次作业 存储过程(PL/SQL语句集)的应用
数据库第十二次作业 存储过程(PL/SQL语句集)的应用
31 0
|
9月前
|
存储
SqlServer存储过程应用二:分页查询数据并动态拼接where条件 (下)
SqlServer存储过程应用二:分页查询数据并动态拼接where条件 (下)
|
9月前
|
存储 SQL 数据库连接
SqlServer存储过程应用二:分页查询数据并动态拼接where条件 (上)
SqlServer存储过程应用二:分页查询数据并动态拼接where条件
|
存储 SQL 关系型数据库
MariaDB、MySQL存储过程、游标基础应用举例说明
MariaDB、MySQL存储过程、游标基础应用举例说明
141 0
|
SQL 存储 Go
数据库原理与应用(SQL Server)笔记 第九章 存储过程和触发器(下)
数据库原理与应用(SQL Server)笔记 第九章 存储过程和触发器
数据库原理与应用(SQL Server)笔记 第九章 存储过程和触发器(下)
|
存储 SQL 开发框架
数据库原理与应用(SQL Server)笔记 第九章 存储过程和触发器(上)
数据库原理与应用(SQL Server)笔记 第九章 存储过程和触发器
数据库原理与应用(SQL Server)笔记 第九章 存储过程和触发器(上)
|
存储 SQL 关系型数据库
数据库学习-存储过程的应用作业示例【带源码】
MySQL数据库存储过程的应用习题示例,包含源码,能建立起基本概念
136 0
数据库学习-存储过程的应用作业示例【带源码】
|
存储 SQL Oracle
MySQL初级篇——存储过程、存储函数的相关概念及应用举例
MySQL初级篇——存储过程、存储函数的相关概念及应用举例
MySQL初级篇——存储过程、存储函数的相关概念及应用举例