实验6 存储过程mysql_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

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值