eileenbanik
asked on
oracle procedure
could you pls decode it simple words 1 thru 20 ..because I dont understand..I understand after that.
1. CREATE OR REPLACE PROCEDURE LOAD_FID_ORDER_DETAIL_F (gl_period varchar2)
2. AS
3. process_name varchar2(30);
4. result varchar2(20);
5. message varchar2(255) := null;
6. records_deleted number := 0;
7. records_inserted number := 0;
8. run_start date;
9. run_finish date;
10. c9 NUMBER;
11. ret NUMBER;
12. strIndex VARCHAR2(256);
13. max_update_date date;
14. begin
15. select 'LOAD_FID_ORDER_DETAIL_F' into process_name from dual;
16. select sysdate into run_start from dual;
17. select nvl(max(lines_last_upd_dt) ,'01-JAN-1 900') into max_update_date
18. from FID_order_detail_f
19. where header_id is not null;
20. dssmart_truncate('FID_TEMP _ORDER_DET AIL_F');
I don’t understand (1-20)
==========================
I understand
=================
-- Insert new or modified orders into temp table.
INSERT INTO FID_TEMP_ORDER_DETAIL_F
(ORDER_NUMBER,
CANCELLED_QUANTITY,
CANCEL_CODE,
CHANGE_DATE,
CURRENCY,
CUSTOMER_ID,
DATE_ORDERED,
DATE_REQUESTED_CURRENT,
HEADER_ID,
market_code,
INVENTORY_ITEM_ID,
LINE_ID,
line_prefix,
LINE_NUMBER,
OPERATING_UNIT_ID,
ORDERED_QUANTITY,
ORDER_TYPE_ID,
PAYMENT_TERM_ID,
PO_NUMBER,
PROMISE_DATE,
SALE_CHANNEL_CODE,
SCHEDULE_SHIP_DATE,
SHIPPED_QUANTITY,
UNIT_LIST_PRICE,
UNIT_SELLING_PRICE,
WAREHOUSE_ID,
ordered_by_contact_id,
--ship_to_site_use_id,
ship_to_address_id,
ship_to_contact_id,
--invoice_to_site_use_id,
invoice_to_address_id,
invoice_to_contact_id,
payment_type_code,
payment_amount,
headers_last_upd_dt,
lines_last_upd_dt
)
SELECT
SO_HEADERS_ALL.ORDER_NUMBE R,
nvl(SO_LINES_ALL.CANCELLED _QUANTITY, 0),
'N/A',
SO_LINES_ALL.LAST_UPDATE_D ATE,
NVL(SO_HEADERS_ALL.CURRENC Y_CODE,'US D'),
nvl(SO_HEADERS_ALL.CUSTOME R_ID,'9999 999999'),
TRUNC(SO_HEADERS_ALL.DATE_ ORDERED),
SO_LINES_ALL.DATE_REQUESTE D_CURRENT,
SO_HEADERS_ALL.HEADER_ID,
SO_HEADERS_ALL.ATTRIBUTE1,
SO_LINES_ALL.INVENTORY_ITE M_ID,
--MTL_SYSTEM_ITEMS.SEGMENT 1, Changed from FID Item number to Oracle Item Number
SO_LINES_ALL.LINE_ID,
SO_LINES_ALL.ATTRIBUTE1,
SO_LINES_ALL.LINE_NUMBER,
SO_LINES_ALL.ORG_ID,
SO_LINES_ALL.ORDERED_QUANT ITY,
SO_HEADERS_ALL.ORDER_TYPE_ ID,
NVL(SO_HEADERS_ALL.TERMS_I D,999999),
SO_HEADERS_ALL.PURCHASE_OR DER_NUM,
TRUNC(SO_LINES_ALL.PROMISE _DATE),
SO_HEADERS_ALL.SALES_CHANN EL_CODE,
SO_LINES_ALL.SCHEDULE_DATE ,
NVL(SO_LINES_ALL.SHIPPED_Q UANTITY,0) ,
SO_LINES_ALL.LIST_PRICE,
NVL(SO_LINES_ALL.SELLING_P RICE,0),
SO_LINES_ALL.WAREHOUSE_ID,
nvl(SO_HEADERS_ALL.ORDERED _BY_CONTAC T_ID,'9999 999999'),
-- nvl(SO_HEADERS_ALL.SHIP_TO _SITE_USE_ ID,'999999 9999'), Replaced with address_key
nvl(ship_to.address_id, '9999999999'),
nvl(SO_HEADERS_ALL.SHIP_TO _CONTACT_I D,'9999999 999'),
-- nvl(SO_HEADERS_ALL.INVOICE _TO_SITE_U SE_ID,'999 9999999'), Replaced with address_key
nvl(bill_to.address_id, '9999999999'),
nvl(SO_HEADERS_ALL.INVOICE _TO_CONTAC T_ID,'9999 999999'),
SO_HEADERS_ALL.PAYMENT_TYP E_CODE,
SO_HEADERS_ALL.PAYMENT_AMO UNT,
SO_HEADERS_ALL.LAST_UPDATE _DATE,
SO_LINES_ALL.LAST_UPDATE_D ATE
FROM
INV.MTL_CATEGORIES@PROD.WO RLD MTL_CATEGORIES, -- Changed to PROD from TEST - d.baker 7-30-2001
INV.MTL_ITEM_CATEGORIES@PR OD.WORLD MTL_ITEM_CATEGORIES, -- Changed to PROD from TEST - d.baker 7-30-2001
INV.MTL_SYSTEM_ITEMS@PROD. WORLD MTL_SYSTEM_ITEMS, -- Changed to PROD from TEST - d.baker 7-30-2001
OE.SO_LINES_ALL@PROD.WORLD SO_LINES_ALL, -- Changed to PROD from TEST - d.baker 7-30-2001
OE.SO_HEADERS_ALL@PROD.WOR LD SO_HEADERS_ALL, -- Changed to PROD from TEST - d.baker 7-30-2001
ar.ra_site_uses_all@PROD.W ORLD ship_to, -- Changed to PROD from TEST - d.baker 7-30-2001
ar.ra_site_uses_all@PROD.W ORLD bill_to -- Changed to PROD from TEST - d.baker 7-30-2001
WHERE
SO_LINES_ALL.INVENTORY_ITE M_ID = MTL_SYSTEM_ITEMS.INVENTORY _ITEM_ID(+ )
AND SO_LINES_ALL.WAREHOUSE_ID = MTL_SYSTEM_ITEMS.ORGANIZAT ION_ID(+)
AND SO_HEADERS_ALL.ORDER_CATEG ORY IN ('R','P')
AND SO_LINES_ALL.INVENTORY_ITE M_ID = MTL_ITEM_CATEGORIES.INVENT ORY_ITEM_I D(+)
AND SO_LINES_ALL.WAREHOUSE_ID = MTL_SYSTEM_ITEMS.ORGANIZAT ION_ID(+)
AND MTL_ITEM_CATEGORIES.CATEGO RY_ID = MTL_CATEGORIES.CATEGORY_ID (+)
AND MTL_ITEM_CATEGORIES.CATEGO RY_SET_ID (+) = 1
AND SO_HEADERS_ALL.HEADER_ID = SO_LINES_ALL.HEADER_ID
AND SO_HEADERS_ALL.ORG_ID = 221
--AND SO_HEADERS_ALL.DATE_ORDERE D >= TO_DATE('06-FEB-2001','DD- MON-YYYY')
--AND SO_HEADERS_ALL.DATE_ORDERE D < (TO_DATE('07-FEB-2001','DD -MON-YYYY' ) + 1)
AND SO_LINES_ALL.WAREHOUSE_ID = MTL_ITEM_CATEGORIES.ORGANI ZATION_ID( +)
and so_headers_all.ship_to_sit e_use_id = ship_to.site_use_id(+)
and so_headers_all.invoice_to_ site_use_i d = bill_to.site_use_id(+)
and trunc(so_lines_all.last_up date_date) >= trunc(max_update_date)
and SO_LINES_ALL.line_type_cod e <> 'DETAIL'
;
commit;
I understand
==============
-- Delete modified orders from existing order detail fact table.
delete from FID_order_detail_f
where header_id is not null -- This avoids the legacy records.
and header_id || line_id in (select header_id || line_id from FID_temp_order_detail_f)
;
commit;
-- Insert new or modified orders into order detail fact table.
insert into FID_order_detail_f
select * from FID_temp_order_detail_f;
commit;
-- Count the number of records inserted.
select count(*) into records_inserted
from FID_temp_order_detail_f;
select sysdate into run_finish from dual;
select 'SUCCESS' into result from dual;
insert into FID_batch_log values (FID_batch_seq.nextval, gl_period,
process_name, result, message, 0, records_inserted, run_start, run_finish);
commit;
exception when others then
select 'ERROR' into result from dual;
message := sqlerrm;
insert into FID_batch_log values (FID_batch_seq.nextval, gl_period,
process_name, result, message, records_deleted, 0, run_start, run_finish);
commit;
END;
/
1. CREATE OR REPLACE PROCEDURE LOAD_FID_ORDER_DETAIL_F (gl_period varchar2)
2. AS
3. process_name varchar2(30);
4. result varchar2(20);
5. message varchar2(255) := null;
6. records_deleted number := 0;
7. records_inserted number := 0;
8. run_start date;
9. run_finish date;
10. c9 NUMBER;
11. ret NUMBER;
12. strIndex VARCHAR2(256);
13. max_update_date date;
14. begin
15. select 'LOAD_FID_ORDER_DETAIL_F' into process_name from dual;
16. select sysdate into run_start from dual;
17. select nvl(max(lines_last_upd_dt)
18. from FID_order_detail_f
19. where header_id is not null;
20. dssmart_truncate('FID_TEMP
I don’t understand (1-20)
==========================
I understand
=================
-- Insert new or modified orders into temp table.
INSERT INTO FID_TEMP_ORDER_DETAIL_F
(ORDER_NUMBER,
CANCELLED_QUANTITY,
CANCEL_CODE,
CHANGE_DATE,
CURRENCY,
CUSTOMER_ID,
DATE_ORDERED,
DATE_REQUESTED_CURRENT,
HEADER_ID,
market_code,
INVENTORY_ITEM_ID,
LINE_ID,
line_prefix,
LINE_NUMBER,
OPERATING_UNIT_ID,
ORDERED_QUANTITY,
ORDER_TYPE_ID,
PAYMENT_TERM_ID,
PO_NUMBER,
PROMISE_DATE,
SALE_CHANNEL_CODE,
SCHEDULE_SHIP_DATE,
SHIPPED_QUANTITY,
UNIT_LIST_PRICE,
UNIT_SELLING_PRICE,
WAREHOUSE_ID,
ordered_by_contact_id,
--ship_to_site_use_id,
ship_to_address_id,
ship_to_contact_id,
--invoice_to_site_use_id,
invoice_to_address_id,
invoice_to_contact_id,
payment_type_code,
payment_amount,
headers_last_upd_dt,
lines_last_upd_dt
)
SELECT
SO_HEADERS_ALL.ORDER_NUMBE
nvl(SO_LINES_ALL.CANCELLED
'N/A',
SO_LINES_ALL.LAST_UPDATE_D
NVL(SO_HEADERS_ALL.CURRENC
nvl(SO_HEADERS_ALL.CUSTOME
TRUNC(SO_HEADERS_ALL.DATE_
SO_LINES_ALL.DATE_REQUESTE
SO_HEADERS_ALL.HEADER_ID,
SO_HEADERS_ALL.ATTRIBUTE1,
SO_LINES_ALL.INVENTORY_ITE
--MTL_SYSTEM_ITEMS.SEGMENT
SO_LINES_ALL.LINE_ID,
SO_LINES_ALL.ATTRIBUTE1,
SO_LINES_ALL.LINE_NUMBER,
SO_LINES_ALL.ORG_ID,
SO_LINES_ALL.ORDERED_QUANT
SO_HEADERS_ALL.ORDER_TYPE_
NVL(SO_HEADERS_ALL.TERMS_I
SO_HEADERS_ALL.PURCHASE_OR
TRUNC(SO_LINES_ALL.PROMISE
SO_HEADERS_ALL.SALES_CHANN
SO_LINES_ALL.SCHEDULE_DATE
NVL(SO_LINES_ALL.SHIPPED_Q
SO_LINES_ALL.LIST_PRICE,
NVL(SO_LINES_ALL.SELLING_P
SO_LINES_ALL.WAREHOUSE_ID,
nvl(SO_HEADERS_ALL.ORDERED
-- nvl(SO_HEADERS_ALL.SHIP_TO
nvl(ship_to.address_id, '9999999999'),
nvl(SO_HEADERS_ALL.SHIP_TO
-- nvl(SO_HEADERS_ALL.INVOICE
nvl(bill_to.address_id, '9999999999'),
nvl(SO_HEADERS_ALL.INVOICE
SO_HEADERS_ALL.PAYMENT_TYP
SO_HEADERS_ALL.PAYMENT_AMO
SO_HEADERS_ALL.LAST_UPDATE
SO_LINES_ALL.LAST_UPDATE_D
FROM
INV.MTL_CATEGORIES@PROD.WO
INV.MTL_ITEM_CATEGORIES@PR
INV.MTL_SYSTEM_ITEMS@PROD.
OE.SO_LINES_ALL@PROD.WORLD
OE.SO_HEADERS_ALL@PROD.WOR
ar.ra_site_uses_all@PROD.W
ar.ra_site_uses_all@PROD.W
WHERE
SO_LINES_ALL.INVENTORY_ITE
AND SO_LINES_ALL.WAREHOUSE_ID = MTL_SYSTEM_ITEMS.ORGANIZAT
AND SO_HEADERS_ALL.ORDER_CATEG
AND SO_LINES_ALL.INVENTORY_ITE
AND SO_LINES_ALL.WAREHOUSE_ID = MTL_SYSTEM_ITEMS.ORGANIZAT
AND MTL_ITEM_CATEGORIES.CATEGO
AND MTL_ITEM_CATEGORIES.CATEGO
AND SO_HEADERS_ALL.HEADER_ID = SO_LINES_ALL.HEADER_ID
AND SO_HEADERS_ALL.ORG_ID = 221
--AND SO_HEADERS_ALL.DATE_ORDERE
--AND SO_HEADERS_ALL.DATE_ORDERE
AND SO_LINES_ALL.WAREHOUSE_ID = MTL_ITEM_CATEGORIES.ORGANI
and so_headers_all.ship_to_sit
and so_headers_all.invoice_to_
and trunc(so_lines_all.last_up
and SO_LINES_ALL.line_type_cod
;
commit;
I understand
==============
-- Delete modified orders from existing order detail fact table.
delete from FID_order_detail_f
where header_id is not null -- This avoids the legacy records.
and header_id || line_id in (select header_id || line_id from FID_temp_order_detail_f)
;
commit;
-- Insert new or modified orders into order detail fact table.
insert into FID_order_detail_f
select * from FID_temp_order_detail_f;
commit;
-- Count the number of records inserted.
select count(*) into records_inserted
from FID_temp_order_detail_f;
select sysdate into run_finish from dual;
select 'SUCCESS' into result from dual;
insert into FID_batch_log values (FID_batch_seq.nextval, gl_period,
process_name, result, message, 0, records_inserted, run_start, run_finish);
commit;
exception when others then
select 'ERROR' into result from dual;
message := sqlerrm;
insert into FID_batch_log values (FID_batch_seq.nextval, gl_period,
process_name, result, message, records_deleted, 0, run_start, run_finish);
commit;
END;
/
-- Insert word 'ERROR' into result table
select 'ERROR' into result from dual;
-- Assign SQL error message to variable message
message := sqlerrm;
-- insert a new record into table FID_batch_log
insert into FID_batch_log values (FID_batch_seq.nextval, gl_period,
process_name, result, message, records_deleted, 0, run_start, run_finish);
-- Commit the change/insertion
commit;
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
-- start creating or replacing the procedure LOAD_FID_ORDER_DETAIL_F with one input variable gl_period
1. CREATE OR REPLACE PROCEDURE LOAD_FID_ORDER_DETAIL_F (gl_period varchar2)
-- AS the following
2. AS
-- Variable declaration block 3-13
3. process_name varchar2(30);
4. result varchar2(20);
5. message varchar2(255) := null;
6. records_deleted number := 0;
7. records_inserted number := 0;
8. run_start date;
9. run_finish date;
10. c9 NUMBER;
11. ret NUMBER;
12. strIndex VARCHAR2(256);
13. max_update_date date;
-- begin the procedure block
14. begin
-- Save the LOAD_FID_ORDER_DETAIL_F procedure name in table process_name
15. select 'LOAD_FID_ORDER_DETAIL_F' into process_name from dual;
-- Save current date and time to table run_start
16. select sysdate into run_start from dual;
-- Save the most recent update date into table max_update_date
17. select nvl(max(lines_last_upd_dt)
18. from FID_order_detail_f
19. where header_id is not null;
-- run the dssmart_truncate procedure
20. dssmart_truncate('FID_TEMP