mysql procedure
2013-09-28 02:04
2719 查看
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 ;
定义一个存储过程 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 procedure
- php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
- 如何通过PHP取得MySQL procedure结果
- linux mysql procedure创建
- mysql procedure使用笔记
- MySQL procedure详解
- 修改MySQL procedure 名称的一种方法
- 如何通过 PHP 取得 MySQL procedure 的多结果集
- 如何通过 PHP 取得 MySQL procedure 结果
- php mysql procedure获取多个结果集
- 如何通过 PHP 取得 MySQL procedure 结果
- 如何通过 PHP 取得 MySQL procedure 结果
- jdbc 处理mysql procedure返回的多个结果集
- Mysql procedure 存储过程
- 如何通过 PHP 取得 MySQL procedure 的多结果集
- mysql procedure返回多数据集
- Mysql procedure 存储过程学习,小例子
- 如何通过 PHP 取得 MySQL procedure 结果
- mysql procedure
- mysql procedure (存储过程)理解