这是我的应用程序工作流程。
我有一个ref cursor
,其中包含我的所有员工ID
s ..这只是一个识别号码。
但现在我想为每个员工获取很多信息......(从ref cursor
获取)。这不仅仅是数据,但也有很多计算的派生数据。通过游标和程序等更容易完成的派生......
例如,员工驻留在部门78的所有时间间隔的总和...(可能只是每个员工的一个列)。
所以我认为 可以用非常大来实现这一点(很大,我的意思是很难维护,难以理解,难以优化,难以重用,refactor..etc等)SQL查询,但这确实不是我要做的事,除非作为真正的最后手段。
所以我试图找到使用所有 PL / SQL 的方法将其分成尽可能多的单独单元(可能是函数或程序)以便能够以简单而优雅的方式处理这个......
我认为合并数据集(可能是ref cursors
)的一些方法可以解决我的问题......到目前为止,我已经在互联网上看了一些东西,有些东西看起来很有希望,即流水线 ......虽然我不确定这是我需要的......
总而言之,我所需要的是想法我需要的一些方法来组合生成的ref cursor
(一个非常大的表,一列用于 ID 和大约40个其他列,每个列都有关于 ID 的所有者的特定信息。),使用许多过程,然后我可以发送回我的服务器端应用并处理它。 (在这种情况下导出为excel。)
我真的很茫然..希望有更多经验的人可以帮助我。
FA
答案 0 :(得分:1)
我不确定这是不是你想要的,或者你需要经常运行这件事
但是,因为它听起来非常沉重,你可能不需要在第二天更新数据
如果是每天一次或更少,您可以创建一个包含员工ID的表格,并使用单独的MERGE更新来计算不同的字段
然后应用程序可以从该表中获取数据
每次需要更新数据时,您都可以找到一份计算此工作的工作
你可以在这里阅读有关合并命令的wiki,特别是oracle这里oracle。由于你使用单独的命令,你当然可以在不同的程序中这样做,如果方便的话。
例如:
开始
执行立即'truncate table temp_table';插入temp_table,从emps中选择emp_id;
MERGE INTO temp_table a 使用( 选择名称)b on(a.emp_id = b.emp_id) 当匹配时 UPDATE SET a.name = b.name; ...