码迷,mamicode.com
首页 > 数据库 > 详细

Mysql存储过程

时间:2017-03-31 10:18:10      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:begin   存储   运行   ges   函数   默认   oca   fine   log   

1、 什么是存储过程

简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法;

ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用

2、 实现一个简单的存储过程

## 如果已经存在 则删除
drop procedure if exists proc_addre;
delimiter ;; ## 把默认的输入的结束符;替换成;;
    ## 创建一个 求和的 存储过程
  ## DEFINER 创建者 可以省略 DEFINER=root@localhost 默认当前登录人
    CREATE DEFINER=root@localhost PROCEDURE proc_addre(IN a int, IN b int, OUT sum int)
    BEGIN 
        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 ;

SET @b=5; ## 定义变量 b=5
CALL proc_addre(2, @b, @s);  ## 运行存储过程
SELECT @s as sum;  ## 打印 s 变量

技术分享

 3、IF语句

## 存储过程 IF 语句
DROP     PROCEDURE IF EXISTS proce_if;
delimiter ;;
CREATE PROCEDURE porce_if (IN type INT)
BEGIN ## begin end; 是存储过程的块标示方法,类似PHP函数中的 { }  
    declare c VARCHAR(100); ## 定义一个 变长字符串 c
    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;
CALL porce_if(1);

技术分享

 4、 case语句

## 存储过程 case 语句 感觉有点像 PHP 中的 switch 语句
DROP     PROCEDURE IF EXISTS proce_case;
delimiter ;;
CREATE PROCEDURE proce_case (IN type INT)
BEGIN ## begin end; 是存储过程的块标示方法,类似PHP函数中的 { }  
    declare c VARCHAR(100); ## 定义一个 变长字符串 c
    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;
CALL proce_case(1);

技术分享

 

Mysql存储过程

标签:begin   存储   运行   ges   函数   默认   oca   fine   log   

原文地址:http://www.cnblogs.com/shaoshao/p/6649815.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!