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

一、实验目的

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

二、实验环境

三、实验示例

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数据库实验六:存储过程建立与调用的更多相关文章

  1. MySQL数据库(六)-- SQL注入攻击、视图、事物、存储过程、流程控制

    一.SQL注入攻击 1.什么是SQL注入攻击 一些了解sql语法的用户,可以输入一些关键字 或合法sql,来导致原始的sql逻辑发生变化,从而跳过登录验证 或者 删除数据库 import pymysq ...

  2. MySQL数据库(六) —— SQL注入攻击、视图、事物、存储过程、流程控制

    SQL注入攻击.视图.事物.存储过程.流程控制 一.SQL注入攻击 1.什么是SQL注入攻击 import pymysql conn = pymysql.Connect( user="roo ...

  3. Weka里如何将arff文件或csv文件批量导入MySQL数据库(六)

    这里不多说,直接上干货! 前提博客是 Weka中数据挖掘与机器学习系列之数据格式ARFF和CSV文件格式之间的转换(四) 1.将arff文件批量导入MySQL数据库 我在这里,arff文件以Weka安 ...

  4. MySQL数据库笔记六:数据定义语言及数据库的备份和修复

    1. MySQL中的函数 <1>加密函数 password(str) 该函数可以对字符串str进行加密,一般情况下,此函数给用户密码加密. select PASSWORD('tlxy666 ...

  5. MySQL数据库实验:任务一 创建数据库和表

    目录 任务一 创建数据库和表 [实训目的与要求] [实训原理] [实训步骤] 一.熟悉MySQL环境 二.利用MySQL命令行窗口创建数据库及表 三.利用界面工具创建数据库及表 任务一 创建数据库和表 ...

  6. Mysql数据库(六)视图

    一.视图是由数据库中的一个表或多个表导出的虚拟表.其作用是方便用户对数据的操作. 1.视图的概念 2.视图的作用 二.创建视图 创建视图是指在已经存在的数据表上建立视图.视图可以建立在一张表中,也可以 ...

  7. MYSQL数据库学习六 索引的操作

    6.1 索引 由于数据存储在数据库表中,所以索引是创建在数据库表对象上的,由表中的一个或多个字段生成的键组成,这些键存储在数据结构(B-树或哈希表)中,通过索引可以快速有效地查找与键值相关联的字段.根 ...

  8. mysql数据库-定义函数-存储过程写法

    ------------- mysql  定义自定义函数写法 DELIMITER $$ USE `iwmsdb`$$ DROP FUNCTION IF EXISTS `F_WM_DBNAME`$$ C ...

  9. MySQL数据库实验:任务二 表数据的插入、修改及删除

    目录 任务二 表数据的插入.修改及删除 一.利用界面工具插入数据 二.数据更新 (一)利用MySQL命令行窗口更新数据 (二)利用Navicat for MySQL客户端工具更新数据 三.数据库的备份 ...

随机推荐

  1. jq得到总价

    <html><head> <title></title> {load href="/static/js/jquery-1.9.1.min.js ...

  2. CSS文件的三种引入方式

    CSS的引入方式共有三种:行内样式.内部样式表.外部样式表. 一.行内样式 使用style属性引入CSS样式. 示例:<h1 style="color:red;">st ...

  3. Jenkins安全配置详解

    一.进入安全配置界面 首页后点击进入系统管理(Manage Jenkins) ——下拉下方看到安全配置(Configure Global Security) ——进入安全配置界面 二,详解安全配置的选 ...

  4. thinkPHP5.0获取器获取原始数据

    如果你定义了获取器的情况下,希望获取数据表中的原始数据,可以使用:$cate = Cate::get(1);// 通过获取器获取字段echo $cate->type;// 获取原始字段数据ech ...

  5. java——删除链表中等于给定值的所有元素

    class ListNode{ int val ; ListNode next; public ListNode(int x) { val = x; } public ListNode(int[] a ...

  6. Eclipse代码规范工具-Checkstyle安装和使用

    您首先可以参考这里:http://www.ibm.com/developerworks/cn/java/j-ap01117/index.html 那么首先您应该下载CheStyle: http://s ...

  7. MVCC(Multi-Version Concurrency Control)多版本并发控制机

    MVCC(Multi-Version Concurrency Control)是一种多版本并发控制机制.

  8. Git 设置 Hook

    Git 设置 hook Hook 就是钩子,在需要的时候调用,根据每个钩子脚本(函数)的返回值决定下一步的操作. 在使用 Git 的过程中,有时候需要定制 Git 以便满足实际的需求. 需求 在一个项 ...

  9. C# 使用消息队列,包括远程访问

    转:https://www.cnblogs.com/80X86/p/5557801.html 功能需求,用到了队列,用的时候出了很多问题,现在总结一下,希望能对有需要的人提供帮助. 我的需求很简单,就 ...

  10. php数组转json对象并保留数字索引

    本文要解决的问题是php不带索引的数组转换为json对象(而非默认的json数组) php中数组转json使用的方法是系统自带的:json_encode php中数组转json的规则是:当没有指定索引 ...