Default_accounts
========================
p_type varchar2
t_type varchar2
A varchar2
B varchar2
C varchar2
D varchar2
=========================
p_type
并且t_type
是表的主键
p_type t_type A B C D
============================
apple sell Y N N Y
banana buy N N N Y
orange sell Y N N N
mango buy Y Y N Y
papaya buy Y N N Y
apple buy Y N N Y
banana sell Y Y Y Y
============================
Accounts_Exceptions
=============================
acc_excep_id number --sequence (Primary key)
p_type varchar2
t_type varchar2
excep_attribute varchar2 --contains column of default_accounts like A,B,C,D
priority number
excep_base_sql varchar2
excep_value varchar2
===============================
Unique constraint
:p_type,t_type,excep_attribute 和优先级
foreign_key
:p_type 和 t_type 来自Default_accounts
acc_excep_id p_type t_type excep_attribute priority excep_base_sql excep_value
---------------------------------------------------------------------------------------------
1 apple buy A 1 --some-- XYZ
2 apple buy A 2 --some-- PQR
3 banana sell B 1 --some-- GHT
4 banana sell B 2 --some-- GFF
5 orange sell C 1 --some-- DSA
---------------------------------------------------------------------------------------------
excep_base_sql
:它包含一个 sql 查询,例如select 1 from alloc where alloc_id =:alloc;
-- 它是一个示例查询,但它始终包含绑定变量:alloc
现在我的要求是我有一个包含以下记录的游标
alloc_id ,p_type,t_type
我将记录放在一个临时表中,其结构如下:
alloc_id p_type t_type A B C D --------------------------------------------- 11 apple buy 22 apple sell 33 mango buy 12 mango buy 13 mango buy 24 banana buy 54 orange sell
3.但如您所见,我需要批量填充 A、B、C 和 D 值,临时表可以包含周围
millions of record
。4.为了填充值,我需要首先检查 account_exceptions 表是否有任何异常。例如:我
11 apple buy
从临时表中取出并查看异常表,在异常表中按优先级升序查找具有p_type
asapple
和 tt_type
的记录。buy
5.因此,获取带有
acc_excep_id
:1,2
的记录,我获取第一条记录并运行excep_base_sql
带有alloc_id
11 的记录,如果返回行,那么我将excep_attribute
使用临时表中的 A 更新 A,XYZ
然后跳过优先级为 2 的第二条记录,因为优先级为 1 的记录满足。6.如果execptions表中没有条目
apple buy
,那么我需要用default_accounts表填充临时表,所以这个值为Y
。7.因此,如果没有异常满足,则从中选择默认值
default_accounts
。8.简而言之,我需要填充
A B C D
表中的值temp
。9.我需要一种方法来有效地将数据填充到临时表中以获取值
A B C D
。
谁能帮我用这种方法