MySQL知识总结(三)存储过程

1. 创建存储过程

1.1 无参数存储过程

CREATE PROCEDURE bruce_procedure ()

BEGIN

--1.声明变量

--2.执行业务逻辑

END

1.2 有参数的存储过程

CREATE PROCEDURE bruce_procedure (

IN in_exam_id INT,

in_student_types_id VARCHAR (100)

)

BEGIN

--1.声明变量

--2.执行业务逻辑

END

IN 表示输入参数

2. 调用存储过程

--无参调用

Call bruce_procedure();

--有参调用

Call bruce_procedure(1,’2,1’);

3. 删除存储过程

Drop procedure bruce_procedure;

4. 查看存储过程信息

1) show procedure status

显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等

2) show create procedure sp_name

显示某一个存储过程的详细信息

5. 声明变量

CREATE PROCEDURE sc_st_group_courses_class_procedure (

IN in_exam_id INT,

in_student_types_id VARCHAR (100)

)

BEGIN

-- 组织课程组关系id

DECLARE v_group_courses_id INT;

-- 考试组织id

DECLARE v_exam_group_id INT;

END

1) 可以在存储过程全局范围内声明

2) 如果要在局部范围内声明,需重新定义begin end,并在begin和end之间声明变量

6. If

if stop = 1 then

leave cur_loop;

end if;

7. 循环

7.1 结构

cur_loop : loop

//业务逻辑

end loop //结束循环

7.2 跳出循环

leave cur_loop;

8. 游标

8.1 声明游标

CREATE PROCEDURE sc_st_group_courses_class_procedure() 

BEGIN DECLARE STOP INT DEFAULT 0;

-- 创建游标

DECLARE cur CURSOR FOR (

select

group_courses_id,

exam_group_id,

courses_id,

class_id

from sc_group_courses_view WHERE group_class=‘class‘ and exam_id = in_exam_id

);

-- 游标捕捉越界异常

DECLARE CONTINUE HANDLER FOR SQLSTATE ‘02000‘ SET STOP = 1;

END

8.2 打开和关闭游标

打开游标:OPEN cur

关闭游标:CLOSE cur

8.3 遍历游标

CREATE PROCEDURE sc_st_group_courses_class_procedure()

BEGIN DECLARE STOP INT DEFAULT 0;

-- 创建游标

DECLARE cur CURSOR FOR (

select

group_courses_id,

exam_group_id,

courses_id,

class_id

from sc_group_courses_view WHERE group_class=‘class‘ and exam_id = in_exam_id

);

-- 游标捕捉越界异常

DECLARE CONTINUE HANDLER FOR SQLSTATE ‘02000‘ SET STOP = 1;

-- 开启游标

OPEN cur;

-- 开始循环

cur_loop : loop

FETCH cur INTO

v_group_courses_id,

v_exam_group_id,

v_courses_id,

v_class_id

;

-- 判断游标溢出

if stop = 1 then

leave cur_loop;

end if;

-- 结束循环

END loop cur_loop;

-- 关闭游标

CLOSE cur;

END

9. 给变量赋值

DECLARE v_median_index int;

set v_median_index = v_class_count/2-1;

10. 查询并赋值给变量

select

max(sum_score),min(sum_score),avg(sum_score),STD(sum_score)

into

v_highest_score,

v_lowest_score,

v_average,

v_std

from a

;

11. 参考

http://www.ccvita.com/100.html

时间: 2024-10-01 21:06:22

MySQL知识总结(三)存储过程的相关文章

Mysql知识汇总笔记

一.关于表连接 1. 表连接主要包括外连接和内连接,内连接只是选出连接的两张表中的相匹配的记录,但是外连接会选出其它不匹配的记录.内连接和外连接有不同的应用场景. 2. 左连接是以左边表中的记录为准,如果右边表中没有和左边表相匹配的记录,左边表的记录还是会显示. 3. 右连接是以右边表中的记录为准,如果左边表中没有和右边表相匹配的记录,右边表的记录还是会显示. 4. 由2和3中可以知道,左连接和右连接是可以互相转换的 二.关于内建函数,需要用的时候可以查表,尽量使用这些函数,避免自己实现 1.

马哥的mysql知识

关系模型:(结构化数据模型)关系模型实体-关系模型对象关系模型:基于对象的数据模型半结构化数据模型:XML(扩展标记语言)<name>Jerry</name><age>50</age>gender: name: uid: birthdate: name:age:gender name:uid:birthdate 关系:关系代数运算交集:并集:差集:全集:补集: SQL:Structure Query Language 70System R: SQL Ingr

qlserver、Mysql、Oracle三种数据库的优缺点总结

这篇文章主要介绍了sqlserver.Mysql.Oracle三种数据库的优缺点总结,需要的朋友可以参考下 一.sqlserver优点:易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能.与许多其他服务器软件紧密关联的集成性.良好的性价比等:为数据管理与分析带来了灵活性,允许单位在快速变化的环境中从容响应,从而获得竞争优势.从数据管理和分析角度看,将原始数据转化为商业智能和充分利用Web带来的机会非常重要.作为一个完备的数据库和数据分析包,SQLServer为快速开发新一代企业级商业应

mysql实例:在存储过程中创建临时表

在mysql的存储过程创建临时表的例子,是学习mysql 临时表操作的不错的例子. 操作步骤: mysql> mysql> mysql> CREATE TABLE Employee( //创建普通表 -> id int, -> first_name VARCHAR(15), -> last_name VARCHAR(15), -> start_date DATE, -> end_date DATE, -> salary FLOAT(8,2), ->

8.7.4 mysql 内置功能 - 存储过程

一 存储过程 一 存储过程介绍 存储过程包含了一系列可执行的sql语句,存储过程存放于MySQL中,通过调用它的名字可以执行其内部的一堆sql 使用存储过程的优点: #1. 用于替代程序写的SQL语句,实现程序与sql解耦 #2. 基于网络传输,传别名的数据量小,而直接传sql数据量大 使用存储过程的缺点: #1. 程序员扩展功能不方便 补充:程序与数据库结合使用的三种方式 #方式一: MySQL:存储过程 程序:调用存储过程 #方式二: MySQL: 程序:纯SQL语句 #方式三: MySQL

知识点:Mysql 基本用法之存储过程

存储过程 一. 介绍 存储过程包含了一系列可执行的sql语句,存储过程存放于MySQL中,通过调用它的名字可以执行其内部的一堆sql 使用存储过程的优点: 用于替代程序写的SQL语句,实现程序与sql解耦 基于网络传输,传别名的数据量小,而直接传sql数据量大 使用存储过程的缺点: 程序员扩展功能不方便 补充:程序与数据库结合使用的三种方式 方式一: MySQL:存储过程 程序:调用存储过程 方式二: MySQL: 程序:纯SQL语句 方式三: MySQL: 程序:类和对象,即ORM(本质还是纯

Mysql系列(三)—— Mysql主从复制配置

一.前言 主从复制是Mysql知识体系中非常重的要一个模块.学习主从复制和后续的读写分离是完善只是知识体系的重要环节.且主从复制读写分离的思想并不仅仅局限于Mysql,在很多存储系统中都有该方案,如:redis. 从应用的角度思考,主从复制有如下优点: 可以备份数据,容灾 可以做读写分离,分担单机Mysql节点的压力.master只做write,slave做read 数据归类进行分析计算很耗性能时,可以只在slave节点上进行 一定程度保证可用性,master write节点发生宕机,可以快速切

Mysql(7)---存储过程

Mysql(7)---存储过程 存储过程接下来会有三篇相关博客 第一篇存储过程常用语法. 第二篇存储过程中的游标. 第三篇单独讲一个实际开发过程中复杂的真实的案例. 一.概述 1.什么是存储过程 概述:简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法: 说明 :存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用. 2.优点 提高代码的重用性 简化操作 减少了编译次数并且减少

mysql笔记第三天

一下午在学习mysql,最有价值的就是这一点点 Order by 可以对在select字句中出现的字段位置进行排列eg:select name,count(*) from eg group by name order by 2;;这里2的意思跟为count(*)取一个别名是一样的意思, Join(联结)的用法: 将几个表格进行联结,on后面就是搜索的条件,inner join on内联结,left join on 左联结,right右联结,cross join交叉联结(得到的结果是被连接的两个数

mysql中游标在存储过程中的详细用法

昨天写的一个东东,分享下给大家. drop PROCEDURE  if exists sp_cleanUserData; CREATE  PROCEDURE `sp_cleanUserData`() BEGIN /*定义游标*/ declare v_dt bigint(20) default 0 ; declare v_num INT DEFAULT 0; /*游标循环到末尾时给定义的常量赋值*/ declare cur_userId   CURSOR FOR select  userId fr