mysql存储过程PROCEDURE
关键语法
声明语句结束符
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相关推荐
- mysql存储过程——procedure[prəˈsiːdʒər]
[实施工程师]必备技能--mysql存储过程procedure[prəˈsiːdʒər] 存储过程在创建时与创建函数相同,首先都需要临时修改语句结束符号.然后再利用CREATE语句进行创建,其基本语法 ...
- MySQL数据库:存储过程Procedure
一.存储过程: SQL语句需要先编译然后执行,而存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用它. 存储过程 ...
- mysql 存储过程 set into_mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法...
本文实例讲述了mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法.分享给大家供大家参考,具体如下: 存储过程创建(CRE ...
- mysql call procedure into_mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量...
本文实例讲述了mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法.分享给大家供大家参考,具体如下: 存储过程创建(CRE ...
- MySQL笔记(八)存储过程procedure
这是我在学习Mysql之路上做的笔记,今天将它粘出来.这一篇主要是存储过程 procedure.有错误的欢迎大家指出... 数据库的创建参考另一篇博客 储存过程 优点: 1.在创建时,经过编译存放到数 ...
- MySQL存储过程(CREATE PROCEDURE 存储过程名(参数列表))
MySQL存储过程 #存储过程 /* 含义:一组预先编译好的SQL语句的集合,理解成批处理语句 1.提高代码的重用性 2.简化操作 3.减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率 * ...
- MySQL存储过程分支语句_mysql 高级语句--存储过程(PROCEDURE)
mysql 高级语句 一.存储过程 1.什么是存储过程: 就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能. ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的, ...
- MySQL数据库(31):存储过程 procedure
存储过程 procedure stored procedure 完成特定功能的SQL语句集,存储在数据库中,经过第一次编译之后再次调用不需要编译(效率较高) 1.存储过程与函数的区别 1.1.相同点 ...
- mysql存储过程 alter_MYSQL alter procedure alter function 它们只可以更改过程的特性,不可以更改过程的逻辑。...
例子: delimiter // create procedure proc_a(in numberA int) 这样create procedure 是正确的 begin select number ...
最新文章
- 我们遇到什么困难都不要怕,微笑着面对它
- KVM 虚拟化架构和实现原理
- C#串口通信学习笔记
- 计算机批处理英语,英语计算机词汇大全
- 脚本命令配置mysql_MySQL常用的配置、脚本和命令
- 迭代器 in C++
- 配置 AEM CQ6 (author + publish + apache dispatcher + ubuntu )
- 7月第5周回顾:闪联晋级国际标准 云安全时代来临
- apache的源代码编译安装
- 1.8 Linux用户与用户组文件权限
- 《永不放弃-马云给创业者的24堂课》— 综合素质提升书籍
- Linux/Unix IO多路复用之select网络编程(含源码)
- 电视html转vga没有声音,怎样才能让HDMI转VGA连接电视能播放声音?
- Python E化-爬虫VOA-下载MP3
- wifi密码破解软件,谨慎使用!
- 仪表自动识别方法汇总
- 针式PKM初级应用:针式PKM更适合管理什么样的文件
- 倾斜摄影测量(无人机影像)的三维建模和DSM,DOM的生成(挖坑)
- 遗传算法求一元函数的最大值(python)
- 查全率和查准率有什么区别?