文档章节

mysql procedure

notAcoder
 notAcoder
发布于 2013/09/28 02:04
字数 443
阅读 47
收藏 0
1. mysql procedure
定义一个存储过程 sp_search_customer2,p_nam是输入参数,p_cnt是返回参数
CREATE PROCEDURE sp_search_customer2(IN p_nam VARCHAR(20),out p_cnt int)
BEGIN
IF p_nam is null or p_nam = '' THEN
select * from customer;
ELSE
select * from customer where customer.nam LIKE p_nam;
end IF;
select FOUND_ROWS() INTO p_cnt;
END

call sp_search_customer2('',@num);
select @num ;

-- 调用存储过程
CALL sp_search_customer('丁%');

-- 查询 mysql 中所有的存储过程
SHOW PROCEDURE STATUS;
-- 查询 home 数据库中的 存储过程 (procedure)
SHOW PROCEDURE STATUS where Db = 'home';

-- 显示 存储过程的定义
show CREATE PROCEDURE sp_search_customer;

-- 删除存储过程
-- DROP PROCEDURE 存储过程名
DROP PROCEDURE sp_search_customer;

使用 FOUND_ROWS 函数取得前一条select语句检索出的记录条数。FOUND_ROWS函数取得记录数后使用 select ... into 命令将其设置到变量p_cnt中。
select ... into 命令用于将 select 语句中取得的结果设置到指定的变量中,语法如下:
select 列名1,... into 变量名1,... from 表名 where 语句等 ...;
但是请注意此处的select语句必须保证只检索出一条记录或一个值,也不能设置跨越多行的值。

if elseif else  结构 实现多重条件分支
CREATE PROCEDURE sp_search_customer3(in p_dept int)
begin
IF p_dept = 1 THEN
/**/
ELSEIF p_dept = 2 THEN
/**/
ELSEIF p_dept = 3 THEN
/**/
ELSE
/**/
end IF;
end

使用case命令实现多重条件分支
CREATE procedure sp_search_customer4(in p_dept int)
begin
DECLARE temp VARCHAR(20); -- 定义局部变量
CASE p_dept
WHEN 1 then
/**/
SET temp ='hello'; -- 给变量赋值
WHEN 2 then
/**/
SET temp ='hello1';
WHEN 3 then
/**/
SET temp ='hello2';
else
/**/
SET temp ='hello3';
end case
end

使用循环
-- 使用循环
create procedure sp_factorial(in p_num int,out p_result int)
begin
SET p_result = 1;
while p_num>1 do
set p_result = p_result*p_num;
set p_num = p_num-1;
end while;
end

call sp_factorial(5,@res);
select @res ;

-- 使用 repeat
create procedure sp_factorial2(in p_num int,out p_result int)
begin
set p_result = 1;
repeat
set p_result = p_result*p_num;
set p_num = p_num-1;
until p_num<=1 end repeat;
end

call sp_factorial2(5,@res);
select @res ;

© 著作权归作者所有

上一篇: mysql触发器
notAcoder
粉丝 5
博文 30
码字总数 12671
作品 0
巴南
架构师
私信 提问
mysql存储过程入门与提高(第四篇)

万源之源之Hello World 几乎每种程序语言的开场白都是这样的。。。。。。 系统环境kali+mysql5.5 别问我为啥不用mysl 5.6的最新版,我只想说不当小白鼠。线上环境好多目前主流应该还都是5.5...

落叶刀
2015/09/24
248
0
mysql数据库存储过程

存储过程简介 存储过程可以简单理解为一条或者多条sql语句的集合,存储过程用来实现将一组关于表的操作的sql语句当作一个整体来执行,存储过程在实际应用中最主要的特点的事提高执行效率以及...

探花无情
2017/04/19
0
0
mysql数据库存储过程

存储过程简介 存储过程可以简单理解为一条或者多条sql语句的集合,存储过程用来实现将一组关于表的操作的sql语句当作一个整体来执行,存储过程在实际应用中最主要的特点的事提高执行效率以及...

探花无情
2017/04/19
0
0
PHP调用MYSQL存储过程实例

实例一:无参的存储过程 $conn = mysqlconnect('localhost','root','root') or die ("数据连接错误!!!"); mysqlselectdb('test',$conn); $sql = " create procedure myproce() begin INSERT ......

vga
2014/07/31
112
0
MySQL存储过程简介

1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通...

DanEcho
2016/11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

查看线上日志常用命令

cat 命令(文本输出命令) 通常查找出错误日志 cat error.log | grep 'nick' , 这时候我们要输出当前这个日志的前后几行: 显示file文件里匹配nick那行以及上下5行 cat error.log | grep -C ...

xiaolyuh
20分钟前
3
0
六、Java设计模式之工厂方法

工厂方法定义: 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 类型:创建型 工厂方法-使用场景: 创建对象需要大量重复的代码 ...

东风破2019
26分钟前
3
0
win服务器管理遇到的一系列问题记录

有些小伙伴在使用iis7远程桌面管理工具的时候总是会遇到一系列的问题,下面就是为大家介绍一下服务器日常管理过程中出现的问题及我的解决办法和心得。希望能帮到大家。   拒绝服务器重新启...

1717197346
34分钟前
2
0
flutter 剪切板 复制粘贴

复制粘贴功能 import 'package:flutter/services.dart'; Clipboard.setData(ClipboardData(text:_text));Clipboard.getData;...

zdglf
36分钟前
3
0
如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?

面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费...

米兜
37分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部