每当执行选择查询时,始终从表中计算记录

时间:2014-11-04 14:08:23

标签: plsql count

我想在架构中执行选择查询时计算表中的所有记录。

每次我都不能从(select_query)中写入select count(*)。 我想要一个实用程序,过程,函数等来计算表中的记录 注意:我使用SQL devloper工具。

1 个答案:

答案 0 :(得分:0)

查询似乎特别奇怪。这可能会严重削弱您的数据库。 (根据优化程序模式和数据库的使用级别,这将" kill" it。)

我看到的唯一方法是使用细粒度审核(DBMS_FGA)as explained here

从示例中添加类似

的内容应该很容易
select_sql := sys_context('userenv','current_sql');   
if instr(select_sql, 'select /*counter*/ count(*)') = 0 then
      nb_rows := execute immediate('select /*counter*/ count(*) from (' || select_sql || ')'); 
end if;

并将结果存储在专用表中或发送到其他地方。

当然,你应该为每个表生成一个触发器。