zoukankan      html  css  js  c++  java
  • SQL 存储过程(学生,课程表,选修表)

    一.存储过程的分类 在SQL Server中存储过程分过两类:

      1)系统存储过程("sp_"作为前缀)

      2)用户自定义存储过程

    二.创建和执行存储过程

      1)创建在存储过程的方法一般有两种:

        1.使用SQL Server Management Studio

         2.使用T—SQL语句(重点)

       2)T—SQL中常用的控制流关键字

        begin...end(定义语句块);break(退出最内层的while循环);continue(重新开始while循环); goto label;if...else;return;waitfor(为语句的

    执行设置延迟);while(当特定条件为true时重复语句)

      3)实例:使用T-SQL语句创建和执行存储过程的方法

    --3.1 创建名为"Stuproc1"的存储过程,用来查询班级为"计算机应用"的学生的学号,姓名和性别
    create proc Stuproc1
    as
    select 学号,姓名,性别
    from 学生
    where 学生.班级='计算机应用'
    
    exec Stuproc1
    --备注:as 用于指定该存储过程要执行的操作
    
    --3.2 创建存储过程"Stuproc2",根据用户输入的班级名,查询该班学生的学号,姓名和性别.若不输入班级名,则显示"计算机应用"班的学生
    create proc Stuproc2
    @班级 char(20)='计算机应用'
    as
    select 学生.学号,学生.姓名,学生.性别
    from 学生
    where 学生.班级=@班级
    
    exec Stuproc2 @班级='计算机网络'
    
    --3.3 创建存储过程Stuproc3,根据用户输入的学号和课程名,返回该课程的成绩
    create proc Stuproc3
    (@学号 char(9),@课程名 char(20))
    as
    select 选修.成绩
    from 课程 inner join 选修 on 选修.课程号=课程.课程号
    where  选修.学号=@学号 and 课程.课程名=@课程名
    
    exec Stuproc3 @学号='1002',@课程名='计算机软件'
    
    --3.4 创建存储过程Stuproc4,根据用户输入的课程名,返回选修该课程的学生人数
    create proc Stuproc4
    @课程名 char(20)
    as 
    select 课程名,COUNT(*) as 学生人数
    from 课程 inner join 选修 on 课程.课程号=选修.课程号
    group by 课程名
    
    exec Stuproc4 @课程名='计算机应用'
    
    drop proc Stuproc4
    
    --3.5 创建存储过程Stuproc5,用于查询不及格课程数在4门以上(不包含4门)的学生的全部信息.将这些学生信息存入退学表
    create table 退学(
    学号 char(9) primary key,
    姓名 nvarchar(5),
    班级 char(20),
    性别 nchar(1),
    出生年月日 smalldatetime,
    电话 char(11),
    Email varchar(30),
    备注 varchar(100)
    )
    create proc Stuproc5
    as
    insert into 退学
    select*
    from 学生
    where  学号 in(select 学号
    from 选修
    where 成绩<60
    group by 学号
    having COUNT (*) >4
    )
    drop proc Stuproc5
    
    exec Stuproc5 
    select * from 退学
    
    
    
    --3.6 某些同学因为个人志向,入学后向学校提出转班级申请.创建存储过程Stuproc6,根据输入的学生学号,修改该同学的班级名称
    create proc Stuproc6
    (@学号 char(10),@班级 char(20))
    as
    update 学生
    set 班级=@班级
    where 学号=@学号
    
    exec Stuproc6 @学号='1001',@班级='计算机导论'
    select *
    from 学生

    三.查看存储过程

    --用于显示存储过程的所有者,创建时间,存储过程的参数及其数据类型
    sp_help
    --用于显示存储过程的源代码
    sp_helptext [存储过程名称]
    例:
    sp_helptext Stuproc5
    --用于显示和存储过程相关的数据库对象
    sp_depends
     --用于返回当前数据库中的存储过程列表
    sp_stored_procedures
    例:
    exec Stuproc5

    四.修改存储过程

    --把存储过程Stuproc1修改为能查询"计算机应用班"学生的全部信息
    alter proc Stuproc1
    as
    select *
    from 学生
    where 班级='计算机应用'
    
    sp_helptext Stuproc1
    
    exec Stuproc1

    五.重命名存储过程

    --把存储过程"Stuproc1"重命名为"计算机网络学生"
    sp_rename Stuproc1,计算机网络学生
    sp_help

    六.册除存储过程

    --要删除存储过程"Stuproc2"
    drop proc Stuproc2
    清清软件园 http://sillysoft.taobao.com
  • 相关阅读:
    使用Junit对Spring进行单元测试实战小结
    【VBA编程】02.调试VBA程序
    【VBA编程】01.第一个VBA程序Hello world
    VBA验证工作表是否存在
    VBA对指定单元格填充颜色并且赋值
    Excle中range的一些用法
    Debug.print的用法
    EXCLE图形插入实例
    DB2建立不记录日志的表
    Excle快速输入√与×
  • 原文地址:https://www.cnblogs.com/lqsilly/p/3054412.html
Copyright © 2011-2022 走看看