[英]How to get execution history of a stored procedure in MySQL
我在 MySQL 中创建了一个存储过程,名为:inventory_procedure(fromDateTime)
第三方系统通过以 dd-mm-yyyy hh:mm:ss 格式传递 fromDateTime 以固定的 1 小时间隔执行此存储过程。
有时,第三方系统报告存储过程没有返回任何数据。
当我点击存储过程时,它会为我返回结果。
有什么方法可以获取如下信息:
创建一个像这样的日志表:
create table inventory_procedure_log (
id int unsigned auto_increment primary key,
ts timestamp,
fromDateTime datetime,
rows_returned int
);
您可能希望包含一些索引以进行快速搜索。
在最终的 SELECT 之后在您的过程中插入日志条目:
create procedure inventory_procedure (fromDateTime datetime)
begin
-- random dummy result set
select n
from (select 1 n union select 2 union select 3) as x
where rand() < 0.5;
-- insert log entry
insert into inventory_procedure_log(ts, fromDateTime, rows_returned) values (
now(),
fromDateTime,
found_rows()
);
end
现在您可以在日志表中进行搜索。 例如 - 显示过去 24 小时的所有条目:
select *
from inventory_procedure_log
where ts > now() - interval 24 hour;
在dbfiddle.uk上查看演示
您可以根据需要扩展日志表以获取更多信息(例如 session ID)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.