美文网首页
存储过程

存储过程

作者: 七秒的记忆_d4a7 | 来源:发表于2020-09-03 10:16 被阅读0次

一、什么是存储过程

简单来说,存储过程就是一堆sql的组合, 夹杂着一些控制逻辑。

二、存储过程的应用场景

一般用于处理复杂的数据业务场景,如果涉及到多个数据表操作,会有多次数据库连接, 用存储过程处理,只会有一次数据库连接

三、存储过程的优点

  • 创建时进行一次编译,后续直接使用,执行速度快,效率高
  • 可用于处理复杂的数据操作
  • 存储过程可复用,只需编写一次
  • 安全性高,可指定用户权限

四、存储过程的缺点

  • 相比于代码,存储过程的开发、调试困难
  • 维护成本较高
  • 移植性差(跟数据库强绑定)

五、存储过程事例

存储过程自动创建月表

-- 存储过程
DELIMITER $$
DROP PROCEDURE IF EXISTS `P_AUTO_CREATE_T_RECHARE_ORDER201908`;
CREATE PROCEDURE `P_AUTO_CREATE_T_RECHARE_ORDER201908`()
  BEGIN
    SET @sqlPrefix = "CREATE TABLE IF NOT EXISTS `t_recharge_success_";
    SET @sqlSuffix = "` (
       `rechargeOrderNum` varchar(50) NOT NULL COMMENT '充值订单号',
       `userId` bigint(20) NOT NULL COMMENT '用户id',
       `amount` decimal(32,2) unsigned NOT NULL COMMENT '金额',
       `rechargeTime` bigint(20) NOT NULL COMMENT '充值到账时间',
       `createTime` int(11) NOT NULL COMMENT '入库时间',
       `refer` varchar(128) NOT NULL COMMENT '充值来源refer',
       `payTypeId` int(11) NOT NULL COMMENT '充值渠道',
       `extraJsonData` tinytext NOT NULL COMMENT '充值扩展字段',
        PRIMARY KEY (`rechargeOrderNum`),
        KEY `idx_userId` (`userId`),
        KEY `idx_createTime` (`createTime`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='充值成功列表';";


    -- 本月
    SET @thisDateTime = NOW();
    SET @thisYearMonth = DATE_FORMAT(@thisDateTime, '%Y%m');
    SET @tmpSql = CONCAT(@sqlPrefix, @thisYearMonth, @sqlSuffix);
    PREPARE tmpStmt FROM @tmpSql;
    EXECUTE tmpStmt;
 
    -- 下个月
    SET @nextDateTime = DATE_ADD(NOW(), INTERVAL 1 MONTH);
    SET @nextYearMonth = DATE_FORMAT(@nextDateTime, '%Y%m');
    SET @tmpSql = CONCAT(@sqlPrefix, @nextYearMonth, @sqlSuffix);
    PREPARE tmpStmt FROM @tmpSql;
    EXECUTE tmpStmt;
  END;
$$
DELIMITER ;

-- 事件触发器
DELIMITER $$
DROP EVENT IF EXISTS `E_CREATE_T_RECHARE_ORDER201908`;
CREATE EVENT `E_CREATE_T_RECHARE_ORDER201908`
  ON SCHEDULE EVERY 1 DAY
  ON COMPLETION NOT PRESERVE
  ENABLE DO BEGIN
  CALL P_AUTO_CREATE_T_RECHARE_ORDER201908;
END;
$$
DELIMITER ;

相关文章

  • Mysql存储过程

    阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本” 创建存储过程 调用存储过程 存储过程...

  • MySQL批量添加数据

    创建存储过程 执行存储过程 删除存储过程

  • 17 存储过程

    过程: 函数: 过程是没有返回值的函数 存储过程: 存储过程语法 存储过程1--创建简单的存储过程 存储过程2--...

  • 存储过程

    详见存储过程详解 创建存储过程 使用存储过程 存储过程简介 什么是存储过程:存储过程可以说是一个记录集吧,它是由一...

  • 存储过程与函数

    存储过程与函数存储过程的定义存储过程的创建存储过程的操作自定义函数 存储过程与函数 存储过程的定义 运行效率高 降...

  • 存储过程

    ps 不能修改过程体,要修改过程体必须先删除存储过程,再重建 mysql变量的术语分类: 1.用户变量:以"@"开...

  • 存储过程

    存储过程 过程,可以简单理解为是一个函数。 函数和过程的区别:函数总是向调用者返回数据,而过程没有数据返回。 Or...

  • 存储过程

    存储过程(Stored Procedure)是一个可编程的函数,是为了完成特定功能的SQL语句集;创建的存储过程保...

  • 存储过程

    一.基础语法 说明 delimiter // 一般情况下MYSQL以;结尾表示确认输入并执行语句,但在存储过程中;...

  • 存储过程

    存储过程:带有逻辑的sql语句。之前的sql没有条件判断,循环。 存储过程带上流程控制语句(if,while)。 ...

网友评论

      本文标题:存储过程

      本文链接:https://www.haomeiwen.com/subject/uolnsktx.html