The following lines contain the word 'select', 'insert', 'update' or 'delete':
PROCEDURE Insert_Parent_Data( ERRBUF IN OUT VARCHAR2
,RETCODE IN OUT VARCHAR2
,p_degree IN NUMBER);
PROCEDURE Insert_Hirarchial_Data( ERRBUF IN OUT VARCHAR2
,RETCODE IN OUT VARCHAR2
,p_group_id IN NUMBER
,p_level IN NUMBER
,p_degree IN NUMBER);
PROCEDURE Insert_From_Denorm( ERRBUF IN OUT VARCHAR2
,RETCODE IN OUT VARCHAR2
,p_level IN NUMBER
,p_degree IN NUMBER);
*Inserts data to the level equal to profile option value of
*BIL_DO_L1_GRP_AGGR_LVL.
*ERRBUFF: error message returned by the proc
*RETCODE: completion status of the procedure
*p_degree: parallel degree
*p_debug: debug mode (yes or no)
*p_trace: trace mode (yes or no)
********************************************************************/
procedure collect_temp_data( ERRBUF OUT VARCHAR2
, RETCODE OUT VARCHAR2
, p_degree IN NUMBER DEFAULT 4
, p_debug_mode IN VARCHAR2 DEFAULT 'N'
, p_trace_mode IN VARCHAR2 DEFAULT 'N'
) is
CURSOR lvl_cur(l_level number) is
select child_sales_group_id, Hier_level
from bil_do_l1_base_grp_temp
where Hier_level = l_level;
/*insert all the parents*/
Insert_Parent_Data( ERRBUF => ERRBUF
,RETCODE => RETCODE
,p_degree => p_degree);
Insert_Hirarchial_Data( ERRBUF => ERRBUF
,RETCODE => RETCODE
,p_group_id => j.child_sales_group_id
,p_level => l_counter
,p_degree => p_degree); -- inserting values for level (l_Counter+1)
/*Inserting the last level of data into the table*/
insert_from_denorm( ERRBUF => ERRBUF
,RETCODE => RETCODE
,p_level => l_profile_option
,p_degree => p_degree);
/*Analyze the table after insertion*/
BIL_DO_UTIL_PKG.Write_Log('Analyze table BIL_DO_L1_BASE_GRP_TEMP',p_debug=>G_Debug);
* Insert_parent_data inserts all the top level
*salesgroups(parents) as hier_level=1 in the table
***************************************************************/
PROCEDURE Insert_Parent_Data( ERRBUF IN OUT VARCHAR2
,RETCODE IN OUT VARCHAR2
,p_degree IN NUMBER)IS
l_sysdate DATE := sysdate;
l_insert_statement VARCHAR2(1000);
l_select_statement VARCHAR2(5000);
l_insert_statement := 'INSERT INTO /*+ APPEND PARALLEL(bgt,'||p_degree||') */ bil_do_l1_base_grp_temp bgt';
l_insert_statement := l_insert_statement||'( child_sales_group_id,sales_group_id,Hier_level,creation_date,created_by';
l_insert_statement := l_insert_statement||',last_update_date,last_updated_by,last_update_login,request_id';
l_insert_statement := l_insert_statement||',program_application_id,program_id,program_update_date) ';
l_select_statement :=' (SELECT group_id,group_id, :l_level, :l_sysdate, :G_user_id, :l_sysdate, :G_user_id, :G_login_id';
l_select_statement :=l_select_statement||' , :G_request_id, :G_appl_id, :G_program_id, :l_sysdate FROM ';
l_select_statement :=l_select_statement||' ( SELECT /*+ Parallel(REL,'||p_degree||') */ distinct REL.related_grouP_id group_id ';
l_select_statement :=l_select_statement||' FROM jtf_rs_grp_relations REL, jtf_rs_group_usages usg ';
l_select_statement :=l_select_statement||' WHERE relation_type = :l_parent_group AND related_group_id not in ';
l_select_statement :=l_select_statement||' (SELECT group_id FROM apps.jtf_rs_grp_relations) ';
l_select_statement :=l_select_statement||' AND (start_date_active <= :l_sysdate OR start_date_active IS NULL) ';
l_select_statement :=l_select_statement||' AND (end_date_active > :l_sysdate OR end_date_active IS NULL) ';
l_select_statement :=l_select_statement||' AND usg.group_id = REL.related_group_id AND usg.Usage = :l_sales))';
EXECUTE IMMEDIATE l_insert_statement||l_select_statement
USING
l_level
,l_sysdate
,G_user_id
,l_sysdate
,G_user_id
,G_login_id
,G_request_id
,G_appl_id
,G_program_id
,l_sysdate
,l_parent_group
,l_sysdate
,l_sysdate
,l_sales;
BIL_DO_UTIL_PKG.Write_Log(p_msg=>'No Rows are inserted from Insert_parent_data',p_stime=>l_stime,p_etime=>SYSDATE, p_force=>'Y',p_debug=>G_Debug);
BIL_DO_UTIL_PKG.Write_Log(p_msg=>'Rows Inserted from Insert_parent_data:'||SQL%ROWCOUNT,p_stime=>l_stime,p_etime=>SYSDATE, p_debug=>G_Debug);
ERRBUF := ERRBUF ||' Insert_Parent_Data:'||sqlcode||' '|| sqlerrm;
BIL_DO_UTIL_PKG.Write_Log(p_msg=>' Insert_Parent_Data:'||sqlcode||' '|| sqlerrm
, p_force=> 'Y', p_debug => G_Debug);
END Insert_Parent_Data;
*insert_hirarchial_data is used to insert hirarchial
*data up to the level specified in profile_option
*starting from top.
*@p_level - Determines which level of data is being inserted.
*@Group_id - Sales_group_id
***********************************************/
procedure Insert_Hirarchial_Data( ERRBUF IN OUT VARCHAR2
,RETCODE IN OUT VARCHAR2
,p_group_id IN NUMBER
,p_level IN NUMBER
,p_degree IN NUMBER) is
l_level NUMBER := 0;
l_insert_statement VARCHAR2(1000);
l_select_statement VARCHAR2(5000);
l_delete_flag_y VARCHAR2(1) := 'Y';
l_delete_flag_n VARCHAR2(1) := 'N';
/* inserting data for the given level */
l_level := p_level + 1;
l_insert_statement := 'INSERT INTO /*+ APPEND PARALLEL(bgt,'||p_degree||') */ bil_do_l1_base_grp_temp bgt';
l_insert_statement := l_insert_statement||' ( child_sales_group_id, sales_group_id, Hier_level, creation_date';
l_insert_statement := l_insert_statement||', created_by, last_update_date, last_updated_by, last_update_login';
l_insert_statement := l_insert_statement||', request_id, program_application_id, program_id, program_update_date)';
l_select_statement := '(SELECT /*+ PARALLEL(REL,'||p_degree||') */ REL.group_id';
l_select_statement := l_select_statement||' ,REL.group_id, :l_level, :l_sysdate, :G_user_id';
l_select_statement := l_select_statement||' ,:l_sysdate,:G_user_id,:G_login_id,:G_request_id';
l_select_statement := l_select_statement||' ,:G_appl_id,:G_program_id,:l_sysdate';
l_select_statement := l_select_statement||' FROM jtf_rs_grp_relations REL, jtf_rs_group_usages usg ';
l_select_statement := l_select_statement||' WHERE REL.relation_type = :l_relation_type';
l_select_statement := l_select_statement||' AND (REL.start_date_active <= :l_sysdate OR REL.start_date_active is null)';
l_select_statement := l_select_statement||' AND (REL.end_date_active >= :l_sysdate OR REL.end_date_active is null)';
l_select_statement := l_select_statement||' AND NVL(rel.delete_flag, :l_delete_flag_n) <> :l_delete_flag_y';
l_select_statement := l_select_statement||' AND rel.group_id <> :p_group_id AND rel.related_group_id = :p_group_id ';
l_select_statement := l_select_statement||' AND rel.group_id = usg.group_id AND usg.usage = :l_sales) ';
EXECUTE IMMEDIATE l_insert_statement||l_select_statement
USING
l_level
,l_sysdate
,G_user_id
,l_sysdate
,G_user_id
,G_login_id
,G_request_id
,G_appl_id
,G_program_id
,l_sysdate
,l_relation_type
,l_sysdate
,l_sysdate
,l_delete_flag_n
,l_delete_flag_y
,p_group_id
,p_group_id
,l_sales;
BIL_DO_UTIL_PKG.Write_Log(p_msg=>'No Rows are inserted from Insert_Hirarchial_Data',p_stime=>l_stime,p_etime=>SYSDATE, p_force=>'Y',p_debug=>G_Debug);
BIL_DO_UTIL_PKG.Write_Log(p_msg=>'Rows Inserted from Insert_Hirarchial_Data:'||SQL%ROWCOUNT,p_stime=>l_stime,p_etime=>SYSDATE, p_debug=>G_Debug);
ERRBUF := ERRBUF ||' Insert_Hirarchial_Data:'||sqlcode||' '|| sqlerrm;
BIL_DO_UTIL_PKG.Write_Log(p_msg=>' Insert_Hirarchial_Data:'||sqlcode||' '|| sqlerrm
, p_force=> 'Y', p_debug => G_Debug);
end insert_hirarchial_data;
*insert_from_denorm is used insert data from jtf_rs_groups_denorm table from hirarchial level=p_level.
*@p_group_id - Group_id which needs to be inserted along with all its children.
*
******************************************************************************************************/
procedure Insert_From_Denorm( ERRBUF IN OUT VARCHAR2
,RETCODE IN OUT VARCHAR2
,p_level IN NUMBER
,p_degree IN NUMBER) is
l_level number := 0;
l_insert_statement VARCHAR2(1000);
l_select_statement VARCHAR2(5000);
l_insert_statement := 'INSERT INTO /*+ APPEND PARALLEL(bgt,'||p_degree||') */ bil_do_l1_base_grp_temp bgt';
l_insert_statement := l_insert_statement||' ( child_sales_group_id, sales_group_id, Hier_level, creation_date';
l_insert_statement := l_insert_statement||', created_by, last_update_date, last_updated_by, last_update_login';
l_insert_statement := l_insert_statement||', request_id, program_application_id, program_id, program_update_date)';
l_select_statement :=' (select /*+ PARALLEL(den,'||p_degree||') */ distinct den.group_id';
l_select_statement :=l_select_statement||' , den.parent_group_id, :l_level, :l_sysdate, :G_user_id, :l_sysdate';
l_select_statement :=l_select_statement||' , :G_user_id, :G_login_id, :G_request_id, :G_appl_id';
l_select_statement :=l_select_statement||' , :G_program_id, :l_sysdate';
l_select_statement :=l_select_statement||' from jtf_rs_groups_denorm den, jtf_rs_group_usages usg ';
l_select_statement :=l_select_statement||' where den.parent_group_id in ';
l_select_statement :=l_select_statement||' (select child_sales_group_id from bil_do_l1_base_grp_temp';
l_select_statement :=l_select_statement||' where Hier_level = :p_level)';
l_select_statement :=l_select_statement||' and (den.start_date_active <= :l_sysdate OR den.start_date_active is null)';
l_select_statement :=l_select_statement||' and (den.end_date_active >= :l_sysdate OR den.End_date_active is null)';
l_select_statement :=l_select_statement||' and den.parent_group_id <> den.group_id AND usg.group_id = den.group_id AND usg.usage = :l_sales)';
EXECUTE IMMEDIATE l_insert_statement||l_select_statement
USING
l_level
,l_sysdate
,G_user_id
,l_sysdate
,G_user_id
,G_login_id
,G_request_id
,G_appl_id
,G_program_id
,l_sysdate
,p_level
,l_sysdate
,l_sysdate
,l_sales;
BIL_DO_UTIL_PKG.Write_Log(p_msg=>'No Rows are inserted from Insert_From_Denorm',p_stime=>l_stime,p_etime=>SYSDATE, p_force=>'Y',p_debug=>G_Debug);
BIL_DO_UTIL_PKG.Write_Log(p_msg=>'Rows Inserted from Insert_From_Denorm:'||SQL%ROWCOUNT,p_stime=>l_stime,p_etime=>SYSDATE, p_debug=>G_Debug);
ERRBUF := ERRBUF ||' Insert_From_Denorm:'||sqlcode||' '|| sqlerrm;
BIL_DO_UTIL_PKG.Write_Log(p_msg=>' Insert_From_Denorm:'||sqlcode||' '|| sqlerrm
, p_force=> 'Y',p_debug => G_Debug);
END Insert_From_Denorm;