字段名   数据类型 主键 外键 非空 唯一 自增

id  INT  是   否    是    是  否

name VARCHAR(50)  否   否    是    否  否

glass   VARCHAR(50)  否   否    是    否  否

mysql> create table sch (-> id int primary key not null unique,-> name varchar(50) not null,-> glass varchar(50) not null-> );

sch 表内容

id name glass

1 xiaommg glass 1

2  xiaojun glass 2

 insert into sch values('1','xiaommg','glass 1'),('2','xiaojun','glass 2');

select * from sch ;

1、创建一个可以统计表格内记录条数的存储函数 ,函数名为count_sch()

1.1创建函数

mysql> \d $$
mysql> create procedure count_sch()-> begin ->      select count(*) from sch;-> end $$
Query OK, 0 rows affected (0.00 sec)mysql> \d ;

1.2叫一下函数

mysql> call count_sch();

2、创建一个存储过程avg_sai,有3个参数,分别是deptno,job,接收平均工资,功能查询emp表dept为30,job为销售员的平均工资。(使用之前的emp表)

2.1创建emp表

CREATE TABLE `emp`  (`empno` int(4) NOT NULL,`ename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`job` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`mgr` int(4) NULL DEFAULT NULL,`hiredate` date NOT NULL,`sai` int(255) NOT NULL,`comm` int(255) NULL DEFAULT NULL,`deptno` int(2) NOT NULL,PRIMARY KEY (`empno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

2.2插入数据

INSERT INTO `emp` VALUES (1001, '甘宁', '文员', 1013, '2000-12-17', 8000, NULL, 20);
INSERT INTO `emp` VALUES (1002, '黛绮丝', '销售员', 1006, '2001-02-20', 16000, 3000, 30);
INSERT INTO `emp` VALUES (1003, '殷天正', '销售员', 1006, '2001-02-22', 12500, 5000, 30);
INSERT INTO `emp` VALUES (1004, '刘备', '经理', 1009, '2001-04-02', 29750, NULL, 20);
INSERT INTO `emp` VALUES (1005, '谢逊', '销售员', 1006, '2001-09-28', 12500, 14000, 30);
INSERT INTO `emp` VALUES (1006, '关羽', '经理', 1009, '2001-05-01', 28500, NULL, 30);
INSERT INTO `emp` VALUES (1007, '张飞', '经理', 1009, '2001-09-01', 24500, NULL, 10);
INSERT INTO `emp` VALUES (1008, '诸葛亮', '分析师', 1004, '2007-04-19', 30000, NULL, 20);
INSERT INTO `emp` VALUES (1009, '曾阿牛', '董事长', NULL, '2001-11-17', 50000, NULL, 10);
INSERT INTO `emp` VALUES (1010, '韦一笑', '销售员', 1006, '2001-09-08', 15000, 0, 30);
INSERT INTO `emp` VALUES (1011, '周泰', '文员', 1006, '2007-05-23', 11000, NULL, 20);
INSERT INTO `emp` VALUES (1012, '程普', '文员', 1006, '2001-12-03', 9500, NULL, 30);
INSERT INTO `emp` VALUES (1013, '庞统', '分析师', 1004, '2001-12-03', 30000, NULL, 20);
INSERT INTO `emp` VALUES (1014, '黄盖', '文员', 1007, '2002-01-23', 13000, NULL, 10);
INSERT INTO `emp` VALUES (1015, '张三', '保洁员', 1001, '2013-05-01', 80000, 50000, 50);

2.3创建avg_sai

mysql>\d $$
mysql> create procedure avg_sai(in a1 int ,in a2 varchar(50),out a3 int)-> begin->      select avg(sai) into a3 from emp->      where deptno = a1 and job = a2;-> end $$
Query OK, 0 rows affected (0.00 sec)mysql> \d ;

mysql> call avg_sai(30,'销售员',@xx);

ERROR 1366 (HY000): Incorrect string value: '\xE9\x94\x80\xE5\x94\xAE...' for column 'a2' at row 1 

炸裂

有待完善。

MySQL(8)存储过程和函数相关推荐

  1. MySQL之存储过程及函数的使用

    MySQL之存储过程及函数的使用 4.存储过程和函数 4.1 存储过程和函数概述 存储过程和函数是 事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程和函数可以简化应用开发人员的很多工作 ...

  2. mysql创建存储过程及函数详解

    文章来源: 学习通http://www.bdgxy.com/ 目录 1. 存储过程 1.1. 基本语法 1.2 创建一个指定执行权限的存储过程 1.3?DELIMITER 的使用 2. 创建函数? 1 ...

  3. MySQL 案例实战--MySQL数据库 存储过程 存储函数

    MySQL数据库 存储过程 & 存储函数 前言 一.什么是存储过程 & 存储函数 二.存储过程的创建和调用 三.存储函数的创建和调用 前言 本环境是基于 Centos 7.8 系统构建 ...

  4. MySQL的存储过程和函数简单写法

    什么是存储过程 简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法: ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功 ...

  5. mysql存储过程输入参数拆分_一文看懂mysql数据库存储过程、函数、视图、触发器、表...

    概述 抽空总结一下mysql的一些概念性内容,涉及存储过程.函数.视图.触发器等. 一.查看存储过程.函数.视图.触发器.表 1.存储过程 select * from mysql.proc where ...

  6. MySQL高级-存储过程和函数

    存储过程和函数 1.存储过程和函数概述 2 创建存储过程 3 调用存储过程 4 查看存储过程 5 删除存储过程 6 语法 6.1 变量 6.2 if条件判断 6.3 传递参数 6.4 case结构 6 ...

  7. MySQL——创建存储过程和函数

    简单地说,存储过程就是一条或多条  SQL  语句的集合,可视为批文件,但是其作用不仅限于批处理.存储程序可以分为存储过程和函数.存储过程要用 CALL  语句来调用,并且只能用输出变量返回值. 1. ...

  8. MySQL 基础 ———— 存储过程与函数

    一.存储过程介绍 存储过程是一组预先编译好的SQL语句的集合,可理解成批处理语句.它的优点主要有以下几点: 1.提高代码的重用性: 2.简化操作: 3.减少了编译次数并且减少了和数据库服务器的连接次数 ...

  9. MySQL之存储过程和函数

    1. 变量 系统变量: 定义:变量由系统提供,不是用户定义,属于服务器层面 查看所有变量:SELECT global | session variables; 查看满足条件的部分系统变量:SELECT ...

  10. Mysql使用存储过程与函数进行批量插入数据

    批量插入 第一步表格 SET FOREIGN_KEY_CHECKS=0;-- ---------------------------- -- Table structure for dept -- - ...

最新文章

  1. MFC之按键消息(长按处理)
  2. 彻底理解 Spring 容器和应用上下文
  3. Windows7 64位 plsql developer连接oracle最终解决方法
  4. doxygen:代码生成文档的工具
  5. CSUOJ 1196- Staginner 去爬山
  6. jdk1.6的项目可以用1.8吗_摩托车链条的保养项目有哪些?可以用高压水枪清洗吗?...
  7. Eclipse安装试用Hanlp
  8. SAP如何自定义客户编码
  9. 马克龙宣布15亿欧元投资AI,DeepMind拥吻巴黎
  10. 算法一看就懂之「 递归 」
  11. maya curveflow修改
  12. 关于动作捕捉动画一些记录
  13. 计算机软件网络工程师考试试题,计算机软件水平考试《网络工程师》试题及答案(6)...
  14. 新手入门吉他买什么好?十年吉他老司机教你如何远离烧火棍,附上靠谱吉他品牌推荐!
  15. R语言-变量命名规则
  16. 关于任务计划指定错误:0X80041315、0X80070005拒绝访问
  17. 全球与中国蘑菇市场深度研究分析报告
  18. 《我想进大厂》之Java基础夺命连环14问
  19. launch 文件中remap标签的使用
  20. linux给网卡添加一个ip地址,linux网络配置中如何给一块网卡添加多个IP地址

热门文章

  1. AOP+自定义注解 实现service统一的异常信息处理
  2. android studio 调用c++,android studio配置opencv,调用c++,处理图像
  3. 获取当前系统时间c语言,使用C语言获取当前系统的时间
  4. linux下mtr命令,如何使用Linux mtr命令
  5. mysql的存储引擎详解_MySQL常见存储引擎详解
  6. san分布式共享文件系统_SAN网络存储共享软件全攻略剖析
  7. C语言实现静态顺序表
  8. java成员变量的初始化_Java成员变量初始化过程
  9. 扇区 修复 linux,linux – 如何使用hdparm来修复挂起的扇区?
  10. circlegan_【源码解读】cycleGAN(二) :训练