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

MySQL存储过程---基础

时间:2020-06-10 21:06:35      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:creat   传参   参数   color   create   模式   begin   value   mod   

存储过程

语法

DELIMITER $$

CREATE PROCEDURE `employees`.`a`(参数列表)

    BEGIN
    sql1;
    sql2;
    ...
END$$ DELIMITER ;

语法说明

DELIMITER $$:定义语句结束标记,存储过程体中,每条SQL都使用“;”结束,所有语句作为一个过程体执行,如果过程体中只有一条SQL语句,可以省略begin和end

参数列表:参数模式 参数名 参数类型
参数模式 :
  IN : 输入参数,单独传参。
  OUT : 输出参数,作为返回值的参数。
  INOUT: 既输入有输出,可做输入也可做输出。

调用存储过程

CALL 存储过程名(实参列表)

实例

创建空参数的存储过程

DELIMITER $$

USE `world`$$

DROP PROCEDURE IF EXISTS `t1`$$

CREATE DEFINER=`root`@`10.0.0.%` PROCEDURE `t1`()
BEGIN
SELECT COUNT(*) FROM world.city;
END$$

DELIMITER ;

 

 

 调用

CALL t1()

创建带out参数的存储过程

DELIMITER $$

CREATE
    /*[DEFINER = { user | CURRENT_USER }]*/
    PROCEDURE `world`.`t2`( IN num INT,OUT num1 INT)
    /*LANGUAGE SQL
    | [NOT] DETERMINISTIC
    | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
    | SQL SECURITY { DEFINER | INVOKER }
    | COMMENT ‘string‘*/
    BEGIN
    INSERT INTO t2 VALUES(num);
    SELECT COUNT(*) INTO num1 FROM t2;
    SELECT num1;
    END$$

DELIMITER ;

调用

SET @n2:=0;
CALL t2(2,@n2)
SELECT * FROM t2;

带inout参数的存储过程

DELIMITER $$

CREATE
    /*[DEFINER = { user | CURRENT_USER }]*/
    PROCEDURE `world`.`t3`( INOUT a INT, INOUT b INT, OUT c INT)
    /*LANGUAGE SQL
    | [NOT] DETERMINISTIC
    | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
    | SQL SECURITY { DEFINER | INVOKER }
    | COMMENT ‘string‘*/
    BEGIN
    SELECT a*2 INTO a;
    SELECT b*2 INTO b;
    SELECT a+b INTO c;
    SELECT a,b,c;
    END$$

DELIMITER ;

调用

SET @a:=5;
SET @b:=10;
SET @c:=0;
CALL t3(@a,@b,@c)

 

MySQL存储过程---基础

标签:creat   传参   参数   color   create   模式   begin   value   mod   

原文地址:https://www.cnblogs.com/zh-dream/p/13088419.html

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