MySQL存储过程实践
2024-09-08 10:42:35
对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
最新文章
- java时区问题的一个坑
- nginx完美支持tp框架
- ecshop订单中配送方式报错
- 转:EF调用存储过程、函数
- VS2015连接Oracle数据库(转)
- Android PackageManager基础知识
- 【IE6的疯狂之三】IE6 3像素BUG的实例
- 【Hololens】微软Hololens虚拟现实视频集
- [Swift]LeetCode290. 单词模式 | Word Pattern
- python爬虫---selenium库的用法
- lua-01
- 10.外观模式(Facade Pattern)
- (24)协程---joinall和value
- Jenkins进阶-用户权限管理(10)
- opencv 线,椭圆 圆
- 【洛谷】【最小生成树】P1195 口袋的天空
- 安装与使用 Trac 来管理项目
- Tomcat修改端口和编码配置
- 面向对象先修:Java入门
- 一个自带简易数据集的模拟线性分类器matlab代码——实验训练
热门文章
- PhpStorm之服务器篇
- POJ2718【DFS】
- bzoj 3277: 串 &; bzoj 3473: 字符串【后缀自动机||后缀数组】
- IT兄弟连 JavaWeb教程 重定向
- IT兄弟连 JavaWeb教程 HTTP协议
- Lightoj 1044 - Palindrome Partitioning (DP)
- 看Facebook是如何优化React Native性能
- 机器学习概念之特征选择(Feature selection)
- C#局部类型partial在定义实体类Model中的应用
- 让jquery.tmpl支持序号${index}