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
MySQL数据库实验六:存储过程建立与调用的更多相关文章
- MySQL数据库(六)-- SQL注入攻击、视图、事物、存储过程、流程控制
一.SQL注入攻击 1.什么是SQL注入攻击 一些了解sql语法的用户,可以输入一些关键字 或合法sql,来导致原始的sql逻辑发生变化,从而跳过登录验证 或者 删除数据库 import pymysq ...
- MySQL数据库(六) —— SQL注入攻击、视图、事物、存储过程、流程控制
SQL注入攻击.视图.事物.存储过程.流程控制 一.SQL注入攻击 1.什么是SQL注入攻击 import pymysql conn = pymysql.Connect( user="roo ...
- Weka里如何将arff文件或csv文件批量导入MySQL数据库(六)
这里不多说,直接上干货! 前提博客是 Weka中数据挖掘与机器学习系列之数据格式ARFF和CSV文件格式之间的转换(四) 1.将arff文件批量导入MySQL数据库 我在这里,arff文件以Weka安 ...
- MySQL数据库笔记六:数据定义语言及数据库的备份和修复
1. MySQL中的函数 <1>加密函数 password(str) 该函数可以对字符串str进行加密,一般情况下,此函数给用户密码加密. select PASSWORD('tlxy666 ...
- MySQL数据库实验:任务一 创建数据库和表
目录 任务一 创建数据库和表 [实训目的与要求] [实训原理] [实训步骤] 一.熟悉MySQL环境 二.利用MySQL命令行窗口创建数据库及表 三.利用界面工具创建数据库及表 任务一 创建数据库和表 ...
- Mysql数据库(六)视图
一.视图是由数据库中的一个表或多个表导出的虚拟表.其作用是方便用户对数据的操作. 1.视图的概念 2.视图的作用 二.创建视图 创建视图是指在已经存在的数据表上建立视图.视图可以建立在一张表中,也可以 ...
- MYSQL数据库学习六 索引的操作
6.1 索引 由于数据存储在数据库表中,所以索引是创建在数据库表对象上的,由表中的一个或多个字段生成的键组成,这些键存储在数据结构(B-树或哈希表)中,通过索引可以快速有效地查找与键值相关联的字段.根 ...
- mysql数据库-定义函数-存储过程写法
------------- mysql 定义自定义函数写法 DELIMITER $$ USE `iwmsdb`$$ DROP FUNCTION IF EXISTS `F_WM_DBNAME`$$ C ...
- MySQL数据库实验:任务二 表数据的插入、修改及删除
目录 任务二 表数据的插入.修改及删除 一.利用界面工具插入数据 二.数据更新 (一)利用MySQL命令行窗口更新数据 (二)利用Navicat for MySQL客户端工具更新数据 三.数据库的备份 ...
随机推荐
- HDU-Fibonacci Again(打表找规律)
There are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2). ...
- 华东交通大学2015年ACM“双基”程序设计竞赛1004
Problem D Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Sub ...
- eclipse中找不到base64包的解决方法
eclipse中找不到base64包的解决方法 2017年08月26日 11:05:26 yzp_leo 阅读数:634 标签: javaeclipsebase64更多 个人分类: 日记 ecli ...
- NETCORE openSUSE docker 安装
openSUSE docker 安装https://www.jianshu.com/p/c725a06447d5 zypper命令使用示例https://www.cnblogs.com/linuxpr ...
- 配置MapReduce程序运行环境
已安装eclipse,hadoop 查看教程dblab.xmu.edu.cn/blog/hadoop-build-project-using-eclipse/
- C# 连接 Exchange 发送邮件
C#连接Exchange 发送邮件代码如下 /// <summary> /// exchange群发邮件 /// </summary> /// <param name=& ...
- java lamda
// 查询数据模拟 List<SealListViewVo> list = new ArrayList<SealListViewVo>(); for (int i = 0; i ...
- org.apache.subversion.javahl.ClientException: Working copy is not up-to-date
之前因为将项目中的一个文件删除了,然后添加了新的文件,svn提交的时候报错. 提示:Working copy is not up-to-date 解决办法:对应的项目上右键然后选择team,然后选择u ...
- C语言实现通用链表初步(二)
接着上次的内容,我们继续! 还是无头单向非循环链表.假如要删除某个节点,如何实现? //删除成功返回0,失败返回-1 int slist_del(struct node_info *node, str ...
- 【转载】CSS3 常用四个动画(旋转、放大、旋转放大、移动)
http://blog.csdn.net/fungleo/article/details/49848905