zoukankan      html  css  js  c++  java
  • MySQL数据库实验六:存储过程建立与调用

    实验六  存储过程建立与调用

    一、实验目的

    理解存储过程的概念、建立和调用方法。

    二、实验环境

    三、实验示例

    1、定义一个函数,按性别计算所有学生的平均年龄。

    CREATE FUNCTION aver_age(@sex char(2)) RETURNS int

           AS

           BEGIN

                  DECLARE @aver int

                  SELECT @aver=

                         ( SELECT avg(年龄)

                                FROM s

                                WHERE sex=@SEX

                         )

                  RETURN @aver

           END

    GO

    如下程序对上例定义的aver_age函数进行调用。

    USE student                   /*用户函数在此数据库中已定义*/

    /*定义局部变量*/

    DECLARE @sex char(2)

    DECLARE @aver1 int

    /*给局部变量赋值*/

    SELECT @sex = ‘女’

    SELECT @aver1=dbo.aver_age(@sex) /*调用用户函数,并将返回值赋给局部变量*/

    /*显示局部变量的值*/

    SELECT @aver1 AS '男性学生的平均年龄'

    2、利用student数据库中的S、SC表,编写一无参存储过程用于查询每个学生的选课情况,然后调用该存储过程。

    CREATE PROCEDURE  xuanke_info

    AS

           SELECT  S.#,sname,sex,age,c#,score

                  FROM S INNER JOIN sc

                         ON s.s#=sc.s#

    GO

    3、使用带参数的存储过程

     创建存储过程,根据student数据库的3个表查询指定学生的选课情况。

    CREATE PROCEDURE stu_info @sname (8)

    AS

           SELECT  S.#,sname,sex,age,c#,cname,score

                  FROM S,SC,C

                  Where s.s#=sc.s# and sc.c#=c.c# and sname=@sname

    GO

    EXECUTE  stu_info '张三'

    4、使用带OUTPUT参数的存储过程

    编写存储过程,根据给定的学生学号,计算该生的平均成绩

    Create procedure  stuavg @sno char(4) @s_sum float output,@s_avg  float output

    As

      Select @s_sum=sum(score),s_avg=avg(score)

      From sc

      Where s#=@sno

    在调用存储过程stuavg时,存储过程定义时的形参名和调用时的变量名不一定要匹配,不过数据类型和参数位置必须匹配。不过数据类型和参数位置必须匹配。执行语句如

    DECLARE @x float,@y float

    EXECUTE stuavg ‘s3’',@x OUTPUT,@y output

    SELECT @x, @y

    GO

  • 相关阅读:
    开发笔记:python与随机数(转)
    如何建立内核级钩子控制操作系统实现程序隐身(转)
    SPOJ 7001. Visible Lattice Points (莫比乌斯反演)
    BZOJ 2301: [HAOI2011]Problem b (莫比乌斯反演)
    HDU 1695 GCD (莫比乌斯反演)
    HDU 4691 Front compression (2013多校9 1006题 后缀数组)
    HDU 4686 Arc of Dream (2013多校9 1001 题,矩阵)
    HDU 1695 GCD (欧拉函数+容斥原理)
    【转】[专题学习][计算几何]
    POJ 1755 Triathlon (半平面交)
  • 原文地址:https://www.cnblogs.com/gaosheng-221/p/6171838.html
Copyright © 2011-2022 走看看