在存储过程中添加日志以显示插入数据库的记录数

Posted

技术标签:

【中文标题】在存储过程中添加日志以显示插入数据库的记录数【英文标题】:Adding logs in stored procedure to display number of records inserted in DB 【发布时间】:2012-09-13 06:50:21 【问题描述】:

我有一个 shell 脚本,它调用一个在 Oracle DB 中插入数据的存储过程。我需要 4-5 小时来运行该程序。我想在存储过程中添加一个日志,它会显示编号。在特定时间间隔后插入数据库的记录(比如每 20 分钟)。 有没有办法在存储过程中添加日志?

【问题讨论】:

是的,这其实很常见。请参阅我的答案 [此处][1]。 [1]:***.com/questions/4919437/dbms-output-put-line 【参考方案1】:

这取决于您的操作方式。如果您只是直接插入insert into ... select ...,那么不,没有办法。但是,如果您有某种循环,您可以使用 dbms_application_info 包在 V$SESSION 视图中记录您的操作。

我通常会这样做:

dbms_application_info.set_module('Updating Blah','Total: ' || <index var>);

第一个参数是module_name,可以在module列查看,第二个参数是action_name,也就是V$SESSION中的action列。

或者,您始终可以插入或更新一个较小的表,该表跟踪您正在做的事情,因此可以通过异步查询。

【讨论】:

快速加点; 4-5 小时是一天的 1/6,对于一项工作来说,这是相当长的时间。您可能想考虑改进程序。

以上是关于在存储过程中添加日志以显示插入数据库的记录数的主要内容,如果未能解决你的问题,请参考以下文章

mysql中循环插入数据--造测试数据

具有空存储的 ExtJS 网格,在添加/插入时仅显示添加的最新记录 [关闭]

存储过程返回2个结果数据集 - 有没有办法只将第一个数据集插入变量但仍然显示第二个?

使用 hive sql 批量插入数百万条记录到 hive?

如果记录数小于详细信息部分中定义的行,如何插入空行

MyBatis中批量插入数据对插入记录数的限制