添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

mysql如何在存储过程中输出日志信息

作者:Bruce小鬼

这篇文章主要介绍了mysql如何在存储过程中输出日志信息问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mysql在存储过程中输出日志信息

直接用select 打印输出

SELECT 'Comment';

用concat连接变量输出

declare myvar INT default 0;
SET myvar = 5;
SELECT concat('myvar is ', myvar);

myvar is 5

格外创建一个有一列文本列的表,然后往里面塞信息

declare myvar INT default 0;
SET myvar = 5;
insert into tmptable select concat('myvar is ', myvar);

将上面的sql语句封装成一个存储过程log,以后要用的话就直接调用下面的语句就可以了

CALL log(concat('the value is', myvar));

直接输出到一个文本里面

select "penguin" as log into outfile '/tmp/result.txt';

这个命令会有严格的限制,只能将输出文本放在本地,然后给予其创建和写的权限

一旦输出了一个文本,无法重写,这样可以阻止恶意执行sql注入

mysql存储过程中错误日志记录实现

根据官方提供的信息,及查阅多个博客综合,且自己在环境中试验并验证方案可行。

接下来进入正题,我会尽力写的更通俗易懂一些。

建一张日志表,具体字段可以根据需求来设计,下图是我的参考

以上字段按顺序分别是ID,存储过程名称,错误代码,错误描述,插入时间,间隔时间。

在存储过程中添加以上字段的变量

-- 日志记录参数
    DECLARE v_id VARCHAR(50);-- 日志表ID
    DECLARE v_name VARCHAR(50) DEFAULT 'PROC_IMPORTNEWCONTRACT_REAL'; -- 过程名称
    DECLARE v_code VARCHAR(10) DEFAULT '00000';-- 错误码
    DECLARE v_msg_text TEXT DEFAULT 'SUCCESS';-- 返回消息默认为SUCCESS
    DECLARE v_date DATETIME DEFAULT NOW();-- 插入时间默认当前时间
    DECLARE v_invatime DATETIME DEFAULT NOW();-- 间隔时间默认当前时间

以上代码是放在BEGIN下面的

最后一步、事务提交与日志记录

以上代码是放在BEGIN   END的END前面的,其中间的逻辑代码无需改变,如果你有特殊需求可以再改造。

参考资料:

上述的CONTINUE意思为sql发生异常时,为保证存储过程继续往下执行,执行ROLLBACK,进而执行日志记录的操作。

如果将CONTINUE改为EXIT,则意为产生异常时,该存储过程会退出,无法执行日志记录的操作,因为该存储过程直接退出了。

RETURNED_SQLSTATE,返回报错代码,MESSAGE_TEXT返回报错具体信息,官方提供的信息里面是上面的写法。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
  • MySQL数据xtrabackup物理备份的方式
    MySQL数据xtrabackup物理备份的方式
    2023-10-10
  • Mysql my.cnf配置文件参数详解
    Mysql my.cnf配置文件参数详解
    2023-11-11
  • Navicat使用报2059错误的两种解决方案
    Navicat使用报2059错误的两种解决方案
    2023-11-11
  • MyCAT上新增一个库及MyCAT报错1184的问题及解决
    MyCAT上新增一个库及MyCAT报错1184的问题及解决
    2023-11-11
  • mysql如何在存储过程中输出日志信息
    mysql如何在存储过程中输出日志信息
    2023-11-11
  • MySQL json相关函数及功能详解
    MySQL json相关函数及功能详解
    2023-11-11
  • Linux系统下MySQL的初始化和配置指南
    Linux系统下MySQL的初始化和配置指南
    2023-11-11
  • 给MySQL表中的字段设置默认值的两种方法
    给MySQL表中的字段设置默认值的两种方法
    2023-11-11
  • 美国设下计谋,用娘炮文化重塑日本,已影响至中国
    美国设下计谋,用娘炮文化重塑日本,已影响至中国
    2021-11-19
  • 时空伴随者是什么意思?时空伴随者介绍
    时空伴随者是什么意思?时空伴随者介绍
    2021-11-09
  • 工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    2021-11-05
  • 2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2021-10-26
  • 电脑版 - 返回首页

    2006-2024 脚本之家 JB51.Net , All Rights Reserved.
    苏ICP备14036222号