快捷搜索:
来自 网络数据库 2019-06-21 08:33 的文章
当前位置: 67677新澳门手机版 > 网络数据库 > 正文

新京葡娱乐场网址MySQL中的存储过程,MySQL存储过

怎么是储存进程

简单来说的说,正是一组SQL语句集,作用强大,能够兑现部分比较复杂的逻辑作用,类似于JAVA语言中的方法;

ps:存款和储蓄进度跟触发器有一点点类似,都以一组SQL集,不过存款和储蓄进度是前仆后继调用的,且意义比触发器更坚实硬,触发器是某件事触发后自动调用;

一、存款和储蓄进程

有怎么着特色

有输入输出参数,能够注脚变量,有if/else, case,while等决定语句,通过编写制定期存款款和储蓄进度,能够兑现复杂的逻辑作用;

函数的大规模天性:模块化,封装,代码复用;

进程快,唯有第贰次实践需通过编写翻译和优化步骤,后续被调用能够一贯执行,省去以上步骤;

 

积攒进度的骨干格式如下:

仓库储存进程的着力格式如下:

新京葡娱乐场网址 1

-- 声明结束符
-- 创建存储过程
DELIMITER $  -- 声明存储过程的结束符
CREATE PROCEDURE pro_test()    --存储过程名称(参数列表)
BEGIN
    -- 可以写多个sql语句;      -- sql语句 流程控制
    SELECT * FROM employee;
END $  -- 结束 结束符

-- 执行存储过程
CALL pro_test();   -- CALL 存储过程名称(参数);

-- 删除存储过程
DROP PROCEDURE pro_test;

参数:
IN:   表示输入参数,可以携带数据带存储过程中
OUT: 表示输出参数,可以从存储过程中返回结果
INOUT: 表示输入输出参数,既可以输入功能,也可以输出功能

新京葡娱乐场网址 2

 

1. 包涵输入参数的囤积进程

    必要:传入贰个职员和工人的id,查询员工新闻

新京葡娱乐场网址 3

DELIMITER $
CREATE PROCEDURE pro_findById(IN eid INT)  -- IN: 输入参数
BEGIN
    SELECT * FROM employee WHERE id=eid;
END $ 

-- 调用
CALL pro_findById(4);

新京葡娱乐场网址 4

 

2. 分包输出参数的贮存进度

DELIMITER $
CREATE PROCEDURE pro_testOut(OUT str VARCHAR(20))  -- OUT:输出参数
BEGIN
        -- 给参数赋值
    SET str='hellojava';
END $

怎样接受重临参数的值吗?这里提到到MySQL的变量

 

MySQL变量一共有三种:

全局变量

全局变量又叫内置变量,是mysql数据库内置的变量 ,对负有连接都起成效。

翻开全部全局变量: show variables

查阅某些全局变量: select @@变量名

修改全局变量: set 变量名=新值

character_set_client: mysql服务器的接收数据的编码

character_set_results:mysql服务器输出数据的编码

 

对话变量

只存在于当下客户端与数据库服务器端的贰回一而再个中。如若连接断开,那么会话变量全体不知去向!

概念会话变量: set @变量=值

查看会话变量: select @变量

一些变量

在仓库储存进程中动用的变量就叫局地变量。只要存储进程奉行达成,局地变量就不见。

 

归来地点那一个蕴藏进度,怎样接受重回参数的值吗?

概念七个对话变量name, 使用name会话变量接收藏保存款和储蓄进度的再次回到值

CALL pro_testOut(@NAME);

查阅变量值

SELECT @NAME;

 

3. 涵盖输入输出参数的积存进度

新京葡娱乐场网址 5

DELIMITER $
CREATE PROCEDURE pro_testInOut(INOUT n INT)  -- INOUT: 输入输出参数
BEGIN
   -- 查看变量
   SELECT n;
   SET n =500;
END $

-- 调用
SET @n=10;

CALL pro_testInOut(@n);

SELECT @n;

新京葡娱乐场网址 6

 

4. 含有条件决断的积累进度

急需:输入一个整数,若是1,则赶回“周三”,假诺2,重返“星期五”,假若3,再次来到“周日”。别的数字,重返“错误输入”;

新京葡娱乐场网址 7

DELIMITER $
CREATE PROCEDURE pro_testIf(IN num INT,OUT str VARCHAR(20))
BEGIN
    IF num=1 THEN
        SET str='星期一';
    ELSEIF num=2 THEN
        SET str='星期二';
    ELSEIF num=3 THEN
        SET str='星期三';
    ELSE
        SET str='输入错误';
    END IF;
END $

--调用
CALL pro_testIf(4,@str);

SELECT @str;

新京葡娱乐场网址 8

 

5. 含有循环成效的仓库储存进程

必要: 输入贰个整数,求和。比方,输入100,总括1-100的和

新京葡娱乐场网址 9

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;
          SET i=i 1;
    END WHILE;
    SET result=vsum;
END $

--调用
CALL pro_testWhile(100,@result);

SELECT @result;

新京葡娱乐场网址 10

 

6. 用到查询的结果赋值给变量(INTO)

新京葡娱乐场网址 11

DELIMITER $
CREATE PROCEDURE pro_findById2(IN eid INT,OUT vname VARCHAR(20) )
BEGIN
    SELECT empName INTO vname FROM employee WHERE id=eid;
END $

--调用
CALL pro_findById2(1,@NAME);

SELECT @NAME;

新京葡娱乐场网址 12

 

-- 声明结束符
-- 创建存储过程
DELIMITER $  -- 声明存储过程的结束符
CREATE PROCEDURE pro_test()    --存储过程名称(参数列表)
BEGIN
    -- 可以写多个sql语句;      -- sql语句 流程控制
    SELECT * FROM employee;
END $  -- 结束 结束符

-- 执行存储过程
CALL pro_test();   -- CALL 存储过程名称(参数);

-- 删除存储过程
DROP PROCEDURE pro_test;

参数:
IN:   表示输入参数,可以携带数据带存储过程中
OUT: 表示输出参数,可以从存储过程中返回结果
INOUT: 表示输入输出参数,既可以输入功能,也可以输出功能

积攒进程弊端

不等数据库,语法出入非常的大,移植困难,换了数据库,供给再行编排;

不佳管理,把过多事情逻辑写在存款和储蓄进度不佳维护,不便民分层管理,轻易混乱,一般存款和储蓄进程适用于分别对质量供给较高的业务,其余的要求性不是比极大;

...

 

1. 富含输入参数的蕴藏进度

    须求:传入贰个职工的id,查询职员和工人音信

DELIMITER $
CREATE PROCEDURE pro_findById(IN eid INT)  -- IN: 输入参数
BEGIN
    SELECT * FROM employee WHERE id=eid;
END $ 

-- 调用
CALL pro_findById(4);

 

2. 包蕴输出参数的仓储进程

DELIMITER $
CREATE PROCEDURE pro_testOut(OUT str VARCHAR(20))  -- OUT:输出参数
BEGIN
        -- 给参数赋值
    SET str='hellojava';
END $

什么接受重返参数的值吗?这里涉及到MySQL的变量

 

MySQL变量一共有二种:

全局变量

全局变量又叫内置变量,是mysql数据库内置的变量 ,对全部连接都起效能。

翻开全数全局变量: show variables

查阅某些全局变量: select @@变量名

修改全局变量: set 变量名=新值

character_set_client: mysql服务器的接收数据的编码

character_set_results:mysql服务器输出数据的编码

 

对话变量

只设有于当下客户端与数据库服务器端的贰次延续在那之中。要是延续断开,那么会话变量全体丢掉!

概念会话变量: set @变量=值

翻开会话变量: select @变量

一部分变量

在存款和储蓄进程中动用的变量就叫局地变量。只要存款和储蓄进程实行完成,局地变量就丢掉。

 

回到地点那一个蕴藏进程,怎么样接受重回参数的值吗?

本文由67677新澳门手机版发布于网络数据库,转载请注明出处:新京葡娱乐场网址MySQL中的存储过程,MySQL存储过

关键词: