oracle 在后台运行PL/SQL并显示进度条

u3r8eeie  于 2023-11-17  发布在  Oracle
关注(0)|答案(1)|浏览(179)

我写了一个包导入数据从excel文件到数据库与apex_data_parser有些文件可能是沉重的。我想一个进度条开始填充时,用户正在等待的操作完成,直到文件导入。我如何创建这个进度条?
在我写的代码中,我有总行数,信息被逐行插入表中并且我还安装了一个插件,用JavaScript代码以这种方式调用,它可以工作。

  1. apexProgressBar('P20_PROGRESS_BAR').setValues({percentage: 20, message: "Loading...", duration: 1000});

字符串
现在,我如何动态地设置此持续时间?

snz8szmq

snz8szmq1#

我是这么看的。
PL/SQL过程在数据库中运行,并且不(不能)与最终用户交互。这就是为什么-例如-使用DBMS_OUTPUT.PUT_LINE进行“调试”是没有用的,因为当过程完成其工作时,过程会立即显示所有消息。
因此,一种选择是在该过程中包含日志记录。您将创建额外的表和自治事务过程,该过程将在该表中插入日志记录。在内部提交不会影响调用者,但您可以在另一个会话(读取:您的Apex应用程序)中从它获取并查看您已经取得了多大进展。
但是,如果加载过程对整个数据集都有效,那么这就没有用了;你可以记录开始和结束,但不能记录中间的任何内容。这意味着你应该将加载“分割”成几个部分。不能区分哪些部分;例如,加载本身,解析,计算,插入目标表,等等。
另一种选择是使用逐行处理(循环),但这通常是缓慢的,特别是当你必须处理大量数据时。也许你可以将一个巨大的文件分成几个较小的文件,或者以块的方式获取数据(例如,一组中有50.000行)。
当然,你应该知道总行数-否则,你将如何显示进度条。10%的......到底是多少?
所以,也许你能,也许你不能。很难说。

相关问题