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

mysql-(五)-存储过程

时间:2016-07-07 00:46:23      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:

5.1什么是存储过程

带有逻辑的sql语句

  之前的sql没有条件判断,没有循环

  存储过程带上流程控制语句(if while)

5.2存储过程的特点

 1) 执行效率非常快!存储过程在数据库服务端执行

2)  移值性很差,不同数据库不能一直

语法:

DELIMITER $   --声明结束符号

CREATE PROCEDURE pro_test()

BEGIN

    --可写多个sql语句

    SELECT × FROM employee;

END $

 

-- 执行存储过程

CALL pro_test();

参数

带有输入参数的存储过程

--需求传入一个员工的id,查询员工信息

//带有输入参数的存储过程

DELIMITER $

CREATE PROCEDURE pro_findById(IN eid INT)  --IN传入参数

BEGIN

      SELECT* FROM emplotee WHERE id = eid;

END $

---调用

CALL pro_findById(4);

---带有输出参数的存储过程

DELIMITER $

CREATE PROCEDURE pro_testOut(OUT str VARCHAR(20))  --OUT:输出参数

BEGIN

      SET str = "这是一个输出参数"

END $

--删除存储过程

drop PROCEDURE pro_testOut;

--如何接受返回参数的值

--mysql全局变量

参看所有全局变量

--show variables

模糊查询全局变量

--show variables like "character_%"

接受数据编码设置

--character_set_client;

输出数据编码设置

--character_set_results;

 

×××会话变量---只存在于当前客户端与服务器端的一次连接当中,如果链接断开,那么会话变量全部消失

定义一个会话的变量

SET @NAME =‘eric‘

查看会话变量

select @NAME;

×××局部变量,只要存储过程执行完毕,局部变量就丢失

×××1)定义一个会话变量name,2)使用name会话 

CALL pro_testOut(@NAME);

***带有输入输出参数的存储过程

DELIMITER $

CREATE PROCEDURE pro_testInuut(INOUT n INT)

BEGIN

    SELECT n;

    SET n = 500;

END$

--带有条件判断的存储过程

DELIMITER $

CREATE PROCEFURE pro_testIf(IN num INT , OUT str VARCHAR(20))

BEGIN

       IF num = 1 THEN

              SET str="星期一";

       ELSEIF num = 2 THEN

              SET str="星期二";

      ELSE 

              SET str="输入有错误"

      END IF;

END$

 

CALL pro_testIf(1,@str)

SELECT @ str;

**带有循环过程的存储过程

DELIMITER $

CREATE PROCEDURE pro_testWhile(IN num INT , OUT result INT)

BEGIN

      DECLARE i INT DEFAULT 1;

      DECLARE vsum INT DEFAULT 0;

      WHILE i < =num DO

          SET vsum = vsum + i;

          i = i +1;

       END WHILE;

       SET result = vsum;

END $

使用查询的结果作为返回值

DELIMITER $

CRETAE PROCEDURE pro_findById(IN eid INT, OUT vname VARCHAR(20))

BEGIN 

        SELECT empName INTO vname FROM employee WHERE id = eid;

END $

 

mysql-(五)-存储过程

标签:

原文地址:http://www.cnblogs.com/cxspace/p/5648566.html

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