对employees数据库建立存储过程

创建不含有输入输出变量的存储过程

DELIMITER // -- 设定语句结束分隔符
DROP PROCEDURE IF EXISTS GetEmployees; -- 如果该存储过程已经存在,则删除
CREATE PROCEDURE GetEmployees ( ) -- 创建不含有输入输出变量的存储过程
BEGIN
SELECT
*
FROM
employees
LIMIT 3; END //
DELIMITER ; -- 重新设定语句结束分隔符,每次查询结束后都要将分隔符还原为;

创建带有一个输出变量的存储过程

DELIMITER // -- 设定语句结束分隔符
DROP PROCEDURE IF EXISTS GetTotalNum; -- 如果该存储过程已经存在,则删除 CREATE PROCEDURE GetTotalNum (OUT TotalNum INT ) -- 创建带有输出变量的存储过程
BEGIN
SELECT
count( * ) INTO TotalNum
FROM
dept_emp; END //
DELIMITER ;-- 重新设定语句结束分隔符,每次查询结束后都要将分隔符还原为;

创建带有多个输出变量的存储过程

DELIMITER // -- 设定语句结束分隔符
DROP PROCEDURE IF EXISTS GetSalary; -- 如果该存储过程已经存在,则删除 CREATE PROCEDURE GetSalary ( OUT salaryhigh INT, OUT salarylow INT, OUT salaryavg INT ) -- 创建不含有输入输出变量的存储过程
BEGIN
SELECT
Max( salary ) INTO salaryhigh
FROM
salaries; SELECT
Min( salary ) INTO salarylow
FROM
salaries; SELECT
Avg( salary ) INTO salaryavg
FROM
salaries; END //
DELIMITER; -- 重新设定语句结束分隔符,每次查询结束后都要将分隔符还原为;

创建带有输入输出变量的存储过程

DELIMITER // -- 设定语句结束分隔符
DROP PROCEDURE IF EXISTS GetNumEachDept; -- 如果该存储过程已经存在,则删除
CREATE PROCEDURE GetNumEachDept ( IN dept CHAR(10), OUT NumDept INT ) -- 创建带有输入输出变量的存储过程
BEGIN
SELECT
count( * ) INTO NumDept
FROM
dept_emp
WHERE
dept_no = dept; END//
DELIMITER; -- 重新设定语句结束分隔符,每次查询结束后都要将分隔符还原为;

调用存储过程

CALL GetEmployees();

CALL GetSalary (@SalaryHigh, @SalaryLow, @SalaryAvg);
SELECT @Salaryhigh, @Salarylow, @Salaryavg; CALL GetNumEachDept ( 'd004', @NumDept );
SELECT @NumDept; CALL GetTotalNum(@TotalNum);
SELECT @TotalNum;

运行结果:

emp_no   birth_date    first_name  last_name  gender   hire_date
10001 1953-09-02 Georgi Facello M 1986-06-26
10002 1964-06-02 Bezalel Simmel F 1985-11-21
10003 1959-12-03 Parto Bamford M 1986-08-28 @Salaryhigh @Salarylow @Salaryavg
158220 38623 63811 @NumDept
73485 @TotalNum
331603
CALL GetEmployees()
> OK
> 时间: 0s CALL GetSalary (@SalaryHigh, @SalaryLow, @SalaryAvg)
> OK
> 时间: 2.467s SELECT @Salaryhigh, @Salarylow, @Salaryavg
> OK
> 时间: 0s CALL GetNumEachDept ( 'd004', @NumDept )
> OK
> 时间: 0.03s SELECT @NumDept
> OK
> 时间: 0s CALL GetTotalNum(@TotalNum)
> OK
> 时间: 0.07s SELECT @TotalNum
> OK
> 时间: 0s

MySQL存储过程实践的更多相关文章

  1. mysql存储过程实践总结

    一:参数类型 1.IN 只能读取参数并在函数内部更改有效,不能持久化到外部变量 2.OUT  不能读取参数,可以在函数内部修改并保存到外部变量 3.INOUT 既能读取又能持久化 二:基本格式 mys ...

  2. Mysql存储过程给变量赋值的几种方法实践

    BEGIN DECLARE v_request_count INT; #申请次数 DECLARE v_plan_count INT; #安排次数 DECLARE v_learn_count INT; ...

  3. MySQL存储过程 CASE语句

    MySQL存储过程  CASE语句 除了IF语句,MySQL提供了一个替代的条件语句CASE. MySQL CASE语句使代码更加可读和高效. CASE语句有两种形式:简单的搜索CASE语句. 简单C ...

  4. MariaDB MariaDB、MySQL存储过程、游标基础应用举例说明

    MariaDB.MySQL存储过程.游标基础应用举例说明 by:授客 QQ:1033553122 测试环境: MariaDB-10.0.19-centos7-x86_64 实践操作: # 创建测试数据 ...

  5. MySql存储过程参考

    Mysql(9)---纪录一次实际开发过程中用到的复杂存储过程 为了尽可能的还原当时为什么需要用到存储过程,下面我写了个详细的文档,我们可以从需求文档出发来分析. 有关存储过程之前也写了两篇文章来做铺 ...

  6. MySQL存储过程(转)

    一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b" ...

  7. MySql存储过程

    MySQL 存储过程 ```sql CREATE PROCEDURE myprocedure (IN para01 INTEGER) BEGIN DECLARE var01 CHAR(10); IF ...

  8. mysql存储过程和存储函数

    mysql存储过程和存储函数 存数函数代码示例: DROP PROCEDURE IF EXISTS calc_ci_day_suc_rate; delimiter // CREATE FUNCTION ...

  9. mysql存储过程编写-入门案例-遁地龙卷风

    (-1)写在前面 这篇文章只是简要的叙述了mysql存储过程编写的基本概念. 我使用的mysql版本是5.7.9-log. 参照<<深入浅出MySQL>>. (0) delim ...

随机推荐

  1. Codeforces Round #421 (Div. 2)D - Mister B and PR Shifts(模拟)

    传送门 题意 给出n个数,计算在进行n-1次右移中\(min\sum_{i=1}^nabs(p_i-i)\) 分析 我们设置cnt[p[i]-i]为一个数p[i]与它标准位置(如1的标准位置为1)的左 ...

  2. poj1312dfs基础

    就是很简单的DFS-因为数据偏小,上去就是干了 #include <stdio.h> #include <string.h> #include <math.h> # ...

  3. postman接口测试系列: 时间戳和加密

    在使用postman进行接口测试的时候,对于有些接口字段需要时间戳加密,这个时候我们就遇到2个问题,其一是接口中的时间戳如何得到?其二就是对于现在常用的md5加密操作如何在postman中使用代码实现 ...

  4. hive的使用 + hive的常用语法

    本博文的主要内容有: .hive的常用语法 .内部表 .外部表 .内部表,被drop掉,会发生什么? .外部表,被drop掉,会发生什么? .内部表和外部表的,保存的路径在哪? .用于创建一些临时表存 ...

  5. 洛谷1387(基础二维dp)

    题目很简单,数据也很小,但是思路不妨借鉴:dp[i][j]代表以(i,j)为右下角的最长正方形边长. 类比一维里面设“以XX为结尾的最XXX(所求)”. 另外define不要乱用!尤其这种min套mi ...

  6. Android课程设计第三天帧动画区间动画

    注意:课程设计只为完成任务,不做细节描述~ 点火是帧动画,发射是区间动画,于是 <?xml version="1.0" encoding="utf-8"? ...

  7. queue+模拟 Codeforces Round #304 (Div. 2) C. Soldier and Cards

    题目传送门 /* 题意:两堆牌,每次拿出上面的牌做比较,大的一方收走两张牌,直到一方没有牌 queue容器:模拟上述过程,当次数达到最大值时判断为-1 */ #include <cstdio&g ...

  8. JAVA常用知识总结(一)

    try catch finally 的详细用法: public static int testBasic(){ int i = 1; try{ i++; System.out.println(&quo ...

  9. 481 Magical String 魔力字符串

    详见:https://leetcode.com/problems/magical-string/description/ C++: 方法一: class Solution { public: int ...

  10. Backbone.js入门教程第二版笔记(1)

    1.模块 集合 视图 和事件的一个综合例子 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...