关键语法

声明语句结束符

DELIMITER $
此处将语句结束符修改为$
默认情况下,存储过程和默认数据库相关联,如果想指定存储过程创建在某个特定的数据库下,那么在过程名前面加数据库名做前缀

声明存储过程:

CREATE PROCEDURE 存储过程名([[IN |OUT |INOUT ] 参数名 数据类形…])

IN 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
OUT 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

例如:CREATE PROCEDURE demo_in_parameter(IN p_in int)
demo_in_parameter存储过程需要传入一个int类型的参数,参数名称是p_in

删除存储过程:

DROP PROCEDURE 存储过程名

存储过程开始和结束符号:

BEGIN … END

变量定义:

DECLARE a_int int unsigned default 1;
定义一个int类型的变量,名称是a_int
unsigned 表示无符号,就是非负数
默认是为1

变量赋值:

SET a_int= a_int + 1
设置a_int自增

操作实例

CREATE TABLE `user` (`id` int(11) NOT NULL,`name` varchar(255) COLLATE utf8_bin DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

mysql> delimiter $ #修改结束符
mysql> create procedure in_param(in p_in int)-> begin-> insert into user(id,name) value(p_in,"zhangsan");-> end$

标签使用

[begin_label:] BEGIN[statement_list]
END [end_label]

例如:

label1: BEGINlabel2: BEGINlabel3: BEGINstatements; END label3 ;END label2;
END label1

条件语句


if-then-else 语句语法:

if 条件 then完整的执行语句
else完整的执行语句
end if;

mysql> CREATE PROCEDURE proc2(IN parameter int)-> begin-> declare var int;-> set var=parameter+1;-> if var=0 then-> select * from user where id = 1;-> end if;-> if parameter=0 then-> select * from user where id = 2;-> else-> select * from user;-> end if;-> end;-> $

case语句语法:

case 参数
when 0 then     #参数等于0执行完整的执行语句;
when 1 then     #参数等于1执行完整的执行语句;
else    完整的执行语句;
end case;   

循环语句语法:
while ···· end while(执行前进行检查)

declare var int;
set var=0;
while var<6 do完整的执行语句;set var=var+1;
end while;

repeat···· end repeat(执行操作后检查结果)

declare var int
set var=0;
repeat  完整的执行语句;set var=var+1;
until var>=5    #循环条件
end repeat;

loop ·····end loop(循环不需要初始条件,不需要结束条件,leave 语句的意义是离开循环)

declare var int
set var=0;
loop名称:loop  完整的执行语句;set var=var+1;
if var >=5 then
leave loop名称;
end if;
end loop;

使用事务批量插入数据

mysql> create procedure bachInsert(in args int)-> begin-> declare i int default 1;-> start transaction;-> while i <= args do-> insert into user(id,name) value(i,concat("zhangsan-",i));-> set i= i + 1;-> end while;-> commit;-> end$

mysql存储过程PROCEDURE相关推荐

  1. mysql存储过程——procedure[prəˈsiːdʒər]

    [实施工程师]必备技能--mysql存储过程procedure[prəˈsiːdʒər] 存储过程在创建时与创建函数相同,首先都需要临时修改语句结束符号.然后再利用CREATE语句进行创建,其基本语法 ...

  2. MySQL数据库:存储过程Procedure

    一.存储过程: SQL语句需要先编译然后执行,而存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用它. 存储过程 ...

  3. mysql 存储过程 set into_mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法...

    本文实例讲述了mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法.分享给大家供大家参考,具体如下: 存储过程创建(CRE ...

  4. mysql call procedure into_mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量...

    本文实例讲述了mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法.分享给大家供大家参考,具体如下: 存储过程创建(CRE ...

  5. MySQL笔记(八)存储过程procedure

    这是我在学习Mysql之路上做的笔记,今天将它粘出来.这一篇主要是存储过程 procedure.有错误的欢迎大家指出... 数据库的创建参考另一篇博客 储存过程 优点: 1.在创建时,经过编译存放到数 ...

  6. MySQL存储过程(CREATE PROCEDURE 存储过程名(参数列表))

    MySQL存储过程 #存储过程 /* 含义:一组预先编译好的SQL语句的集合,理解成批处理语句 1.提高代码的重用性 2.简化操作 3.减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率 * ...

  7. MySQL存储过程分支语句_mysql 高级语句--存储过程(PROCEDURE)

    mysql 高级语句 一.存储过程 1.什么是存储过程: 就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能. ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的, ...

  8. MySQL数据库(31):存储过程 procedure

    存储过程 procedure stored procedure 完成特定功能的SQL语句集,存储在数据库中,经过第一次编译之后再次调用不需要编译(效率较高) 1.存储过程与函数的区别 1.1.相同点 ...

  9. mysql存储过程 alter_MYSQL alter procedure alter function 它们只可以更改过程的特性,不可以更改过程的逻辑。...

    例子: delimiter // create procedure proc_a(in numberA int) 这样create procedure 是正确的 begin select number ...

最新文章

  1. 我们遇到什么困难都不要怕,微笑着面对它
  2. KVM 虚拟化架构和实现原理
  3. C#串口通信学习笔记
  4. 计算机批处理英语,英语计算机词汇大全
  5. 脚本命令配置mysql_MySQL常用的配置、脚本和命令
  6. 迭代器 in C++
  7. 配置 AEM CQ6 (author + publish + apache dispatcher + ubuntu )
  8. 7月第5周回顾:闪联晋级国际标准 云安全时代来临
  9. apache的源代码编译安装
  10. 1.8 Linux用户与用户组文件权限
  11. 《永不放弃-马云给创业者的24堂课》— 综合素质提升书籍
  12. Linux/Unix IO多路复用之select网络编程(含源码)
  13. 电视html转vga没有声音,怎样才能让HDMI转VGA连接电视能播放声音?
  14. Python E化-爬虫VOA-下载MP3
  15. wifi密码破解软件,谨慎使用!
  16. 仪表自动识别方法汇总
  17. 针式PKM初级应用:针式PKM更适合管理什么样的文件
  18. 倾斜摄影测量(无人机影像)的三维建模和DSM,DOM的生成(挖坑)
  19. 遗传算法求一元函数的最大值(python)
  20. 查全率和查准率有什么区别?

热门文章

  1. Ubantu20.04查看显卡信息
  2. 【线程】详解线程状态(到底是五种还是六种)
  3. js实现登录注册功能
  4. jenkins+jmeter参数化构建
  5. 容易被人忽略的创业赚钱点子和赚钱的坑
  6. EHR人力资源项目总结
  7. 警惕常见6种伤肾食物:煎炸食物不能吃!
  8. tcp拥塞算法分析三(cubic)
  9. 2017-2018-2 20179207 《网络攻防技术》第二周作业
  10. JS观察者模式和发布订阅模式的区别