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およびpriority
foreign_key
:p_typeおよびt_type fromDefault_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
:select 1 from alloc where alloc_id =:alloc;
サンプルクエリのようなSQLクエリが含まれていますが、常にバインド変数が含まれています: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
がフェッチされ、最初のレコードをフェッチして11で実行します。excep_base_sql
行alloc_id
が返された場合は、一時テーブルのexcep_attribute
Aを更新してXYZ
から、優先度2の2番目のレコードをスキップします。これは、優先度が1のレコードであるためです。満足させる 。6. execptionsテーブルにのエントリ
apple buy
が存在しない場合は、一時テーブルにdefault_accountsテーブルを設定する必要があるため、この値はY
です。7.したがって、例外が満たされない場合は、デフォルト値がから選択され
default_accounts
ます。8.要するに、私
A B C D
はテーブルのの値を入力する必要がありますtemp
。9.値の一時テーブルにデータを効率的に入力する方法が必要です
A B C D
。
誰かがこのアプローチで私を助けることができますか