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

一、实验目的

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

二、实验环境

三、实验示例

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. java读取配置到Hash表里

    import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; im ...

  2. 及时从数据库中取得数据填放进Form表单的多选框中

    #写上以下代码就不用担心数据库添加了数据而不能及时获取了 def __init__(self, *args, **kwargs): #每次创建Form1对象时执行init方法 super(Form1, ...

  3. Java RESTful框架的性能比较

    https://colobu.com/2015/11/17/Jax-RS-Performance-Comparison/

  4. thinkphp Model的使用

    4.1 放在哪儿?项目/模块/Model目录下以本教程为例,Home模块的Model/Home/Model/目录下 4.2 model类文件叫什么?模型名: DemoModel.class.php 4 ...

  5. java——极简handler机制

    handler机制要做的事情: 1.把一堆从四面八方传来的message加到一个队列中,这个队列就是MessageQueue. 2.将MessageQueue中的队头Message取出,并使用这个me ...

  6. SQL SERVER数据库 三种 恢复模式

    SQL SERVER 2005 以后三种恢复模式: 简单(Sample),完全(Full),大批量(Bulk_Logged) 完全备份模型 完全备份模式是指在出现数据文件毁坏时丢失数据的风险最小.如果 ...

  7. strcpy/strlen/strcat/strcmp的实现

    一.字符串拷贝strcpy 函数strcpy的原型是char* strcpy(char* des , const char* src),des 和 src 所指内存区域不可以重叠且 des 必须有足够 ...

  8. python 缺失值的处理

  9. javascript 例外处理Try{}catch(e){}

    程序开发中,编程人员经常要面对的是如何编写代码来响应错误事件的发生,即例外处理(exception handlers).如果例外处理代码设计得周全,那么最终呈现给用户的就将是一个友好的界面.否则,就会 ...

  10. Zookeeper配置Kafka

    Zookeeper安装 解压:tar -zxvf zookeeper-3.4.5-cdh5.7.0.tar.gz -C ~/app/ 配置到环境变量: vi ~/.bash_profile expor ...