当前位置:Gxlcms > 数据库问题 > mysql-(五)-存储过程

mysql-(五)-存储过程

时间:2021-07-01 10:21:17 帮助过:2人阅读

声明结束符号 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-(五)-存储过程

标签:

人气教程排行