博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 中的存储过程
阅读量:4671 次
发布时间:2019-06-09

本文共 2122 字,大约阅读时间需要 7 分钟。

创建一个简单的存储过程

存储过程proc_adder功能很简单,两个整型输入参数a和b,一个整型输出参数sum,功能就是计算输入参数a和b的结果,赋值给输出参数sum;

几点说明:

DELIMITER ;;:之前说过了,把默认的输入的结束符;替换成;;。

DEFINER:创建者;

call  : 调用存储过程,用 call 命令

-- ------------------------------ Procedure structure for `proc_adder`-- ----------------------------DROP PROCEDURE IF EXISTS `proc_adder`;DELIMITER ;;CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_adder`(IN a int, IN b int, OUT sum int)BEGIN    #Routine body goes here...    DECLARE c int;    if a is null then set a = 0;     end if;      if b is null then set b = 0;    end if;    set sum  = a + b;END;;DELIMITER ;

  执行以上存储结果,验证是否正确,如下图,结果OK:

set @b=5;call proc_adder(2,@b,@s);select @s as sum;

存储过程中的控制语句

IF语句:

-- ------------------------------ Procedure structure for `proc_if`-- ----------------------------DROP PROCEDURE IF EXISTS `proc_if`;DELIMITER ;;CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_if`(IN type int)BEGIN    #Routine body goes here...    DECLARE c varchar(500);    IF type = 0 THEN        set c = 'param is 0';    ELSEIF type = 1 THEN        set c = 'param is 1';    ELSE        set c = 'param is others, not 0 or 1';    END IF;    select c;END;;DELIMITER ;

CASE语句:

-- ------------------------------ Procedure structure for `proc_case`-- ----------------------------DROP PROCEDURE IF EXISTS `proc_case`;DELIMITER ;;CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_case`(IN type int)BEGIN    #Routine body goes here...    DECLARE c varchar(500);    CASE type    WHEN 0 THEN        set c = 'param is 0';    WHEN 1 THEN        set c = 'param is 1';    ELSE        set c = 'param is others, not 0 or 1';    END CASE;    select c;END;;DELIMITER ;

循环while语句:

-- ------------------------------ Procedure structure for `proc_while`-- ----------------------------DROP PROCEDURE IF EXISTS `proc_while`;DELIMITER ;;CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_while`(IN n int)BEGIN    #Routine body goes here...    DECLARE i int;    DECLARE s int;    SET i = 0;    SET s = 0;    WHILE i <= n DO        set s = s + i;        set i = i + 1;    END WHILE;    SELECT s;END;;DELIMITER ;

转载于:https://www.cnblogs.com/czq-0214/p/9203285.html

你可能感兴趣的文章
NHibernate入门实例
查看>>
IBM_DS5020磁盘阵列做raid、热备并把盘阵挂在服务器上的步骤
查看>>
svg制作风车旋转
查看>>
《软件工程》课堂作业:返回一个整数数组中最大字数组的和
查看>>
ACM 美素数 (没AC)
查看>>
Sqlserver学习研究
查看>>
VTK图形模型主要对象
查看>>
c# Linq实现 获得某一个路径下所有文件的名(不含扩展名)
查看>>
动静态广播的区别
查看>>
前缀式计算(前缀表达式)
查看>>
UOJ 7 NOI2014 购票
查看>>
java学习之—链表(3)
查看>>
【TDS学习文档5】IBM Directory schema的管理3——attributes
查看>>
Codeforces Round #572 (Div. 2)B
查看>>
day 107radis非关系型数据库
查看>>
python re模块
查看>>
程序猿的爱情--2011-01-05
查看>>
loj#2073. 「JSOI2016」扭动的回文串
查看>>
finally代码块
查看>>
业务测试团队目标
查看>>