The following lines contain the word 'select', 'insert', 'update' or 'delete':
PROCEDURE Delete_table( ERRBUF IN OUT VARCHAR2
,RETCODE IN OUT VARCHAR2
,p_date IN DATE);
PROCEDURE Insert_Data( ERRBUF IN OUT VARCHAR2
,RETCODE IN OUT VARCHAR2
,p_degree IN NUMBER
,p_collect_date IN DATE);
select max(collection_date)+1
into l_collection_date_start
from BIL_DO_L1_OPPTY_SUMRY;
/*Analyze the table after insertion*/
BIL_DO_UTIL_PKG.Write_Log('Analyze table BIL_DO_L1_OPPTY_SUMRY',p_debug => p_debug_mode);
/*Delete the existing records for the same collect_date from the table*/
IF (G_Truncate = 'N') THEN
BIL_DO_UTIL_PKG.Write_Log(p_msg=>'Delete Data for collection date: ' || TO_CHAR(l_collection_date, 'DD-MON-YYYY'), p_debug=>p_debug_mode);
Delete_table( ERRBUF => ERRBUF
,RETCODE => RETCODE
,p_date => l_collection_date);
BIL_DO_UTIL_PKG.Write_Log(p_msg=>'Insert Data for collection date: ' || TO_CHAR(l_collection_date, 'DD-MON-YYYY'), p_debug=>p_debug_mode);
/*Calling the insert procedure for inserting data to the table.*/
Insert_Data( ERRBUF => ERRBUF
,RETCODE => RETCODE
,p_degree => p_degree
,p_collect_date => l_collection_date);
*Insert_Data
***********************************************/
PROCEDURE Insert_Data( ERRBUF IN OUT VARCHAR2
,RETCODE IN OUT VARCHAR2
,p_degree IN NUMBER
,p_collect_date IN DATE) IS
/*Strings for Dynamic sql*/
l_insert_string VARCHAR2(1000) := '';
l_select_string VARCHAR2(5000) := '';
l_delete_flag VARCHAR2(1) := 'N';
l_insert_string := 'INSERT INTO BIL_DO_L1_OPPTY_SUMRY( COLLECTION_DATE';
l_insert_string := l_insert_string|| ', SALES_GROUP_ID, PERIOD_NAME, PERIOD_TYPE, WON_AMOUNT, OPEN_AMOUNT';
l_insert_string := l_insert_string|| ', WEIGHTED_OPEN_AMOUNT, FORECAST_AMOUNT, LAST_UPDATE_DATE, LAST_UPDATED_BY';
l_insert_string := l_insert_string|| ', CREATION_DATE, CREATED_BY, LAST_UPDATE_LOGIN, REQUEST_ID';
l_insert_string := l_insert_string||', PROGRAM_APPLICATION_ID, PROGRAM_ID, PROGRAM_UPDATE_DATE) ';
l_select_string := '(SELECT /*+ use_hash(bdlbgt den) Parallel(den,'|| p_degree||')*/ :l_collection_date, bdlbgt.sales_group_id, pd.period_name, pd.period_type';
l_select_string := l_select_string||',sum(decode(nvl(den.WIN_LOSS_INDICATOR,'||l_quote||'N'||l_quote||')';
l_select_string := l_select_string||'||nvl(den.OPP_OPEN_STATUS_FLAG,'||l_quote||'Y'||l_quote||'),';
l_select_string := l_select_string||l_quote||'WN'||l_quote||',den.c1_WON_AMOUNT,0))';
l_select_string := l_select_string||',sum(decode(nvl(den.WIN_LOSS_INDICATOR,'||l_quote||'N'||l_quote||')';
l_select_string := l_select_string||'||nvl(den.OPP_OPEN_STATUS_FLAG,'||l_quote||'Y'||l_quote||'),';
l_select_string := l_select_string||l_quote||'NY'||l_quote||',den.c1_SALES_CREDIT_AMOUNT, 0))';
l_select_string := l_select_string||',sum(decode(nvl(den.WIN_LOSS_INDICATOR,'||l_quote||'N'||l_quote||')';
l_select_string := l_select_string||'||nvl(den.OPP_OPEN_STATUS_FLAG,'||l_quote||'Y'||l_quote||'),';
l_select_string := l_select_string||l_quote||'NY'||l_quote||',den.c1_SALES_CREDIT_AMOUNT*den.WIN_PROBABILITY/100.00, 0))';
l_select_string := l_select_string||',null,:l_sysdate,:G_user_id,:l_sysdate,:G_user_id,:G_login_id,:G_request_id';
l_select_string := l_select_string||',:G_appl_id,:G_program_id,:l_sysdate';
l_select_string := l_select_string||' FROM as_sales_credits_denorm den, bil_do_l1_base_grp_temp bdlbgt,as_period_days pd';
l_select_string := l_select_string||' WHERE pd.start_date <= den.decision_date AND pd.end_date >= den.decision_date';
l_select_string := l_select_string||' AND pd.period_set_name = :l_period_type AND den.sales_group_id = bdlbgt.child_sales_group_id';
l_select_string := l_select_string||' AND pd.period_day = :l_collection_date ';
l_select_string := l_select_string||' AND den.credit_type_id = :l_credit_type AND den.OPP_DELETED_FLAG = :l_delete_flag';
l_select_string := l_select_string||' AND den.status_code in (SELECT STATUS_CODE FROM as_statuses_b ';
l_select_string := l_select_string||' WHERE enabled_flag = :l_enabled_flag and opp_flag = :l_enabled_flag) ';
l_select_string := l_select_string||' AND den.sales_stage_id in (SELECT sales_stage_id FROM as_sales_stages_all_b ';
l_select_string := l_select_string||' WHERE enabled_flag = :l_enabled_flag ';
l_select_string := l_select_string||' AND sysdate between start_date_active and nvl(end_date_active,sysdate))';
l_select_string := l_select_string||' AND den.interest_type_id in (SELECT interest_type_id FROM as_interest_types_b ';
l_select_string := l_select_string||' WHERE enabled_flag = :l_enabled_flag AND expected_purchase_flag = :l_enabled_flag)';
l_select_string := l_select_string||' GROUP BY bdlbgt.sales_group_id,pd.period_name,pd.period_type)';
EXECUTE IMMEDIATE l_insert_string||l_select_string
USING
l_collection_date
,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_period_type
,l_collection_date
,l_credit_type
,l_delete_flag
,l_enabled_flag
,l_enabled_flag
,l_enabled_flag
,l_enabled_flag
,l_enabled_flag;
BIL_DO_UTIL_PKG.Write_Log(p_msg=>'No Rows are inserted from Insert_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:'||SQL%ROWCOUNT,p_stime=>l_stime,p_etime=>SYSDATE, p_debug=>G_Debug);
ERRBUF := ERRBUF ||' Insert_Data:'||sqlcode||' '|| sqlerrm;
BIL_DO_UTIL_PKG.Write_Log(p_msg=>' Insert_Data:'||sqlcode||' '|| sqlerrm
, p_force=> 'Y',p_debug=>G_Debug);
end Insert_Data;
*Delete_table is used to Delete existing records
*from BIL Table BIL_DO_L1_OPPTY_SUMRY for the collection_date.
**************************************************************/
PROCEDURE Delete_table( ERRBUF IN OUT VARCHAR2
,RETCODE IN OUT VARCHAR2
,p_date IN DATE) IS
l_date DATE := p_date;
DELETE FROM BIL_DO_L1_OPPTY_SUMRY
WHERE collection_date = l_date;
BIL_DO_UTIL_PKG.Write_Log(p_msg=>'Deleted records from BIL Table BIL_DO_L1_OPPTY_SUMRY',p_debug=>G_Debug);
ERRBUF := ERRBUF ||' Delete_Data:'||sqlcode||' '|| sqlerrm;