Ես ունեմ ApEx հավելված, որը, ի թիվս այլ նպատակների, ունի հեռահաղորդակցության մատակարարների կողմից տրամադրված վճարային տվյալների վերբեռնման պահանջ: Տվյալները տրամադրվում են որպես CSV ֆայլ:
Մենք ունենք երկու սեղան։ Առաջին աղյուսակը՝ phone_invoice
, պարունակում է յուրաքանչյուր ապրանքագրի մետատվյալներ, ինչպիսիք են վճարման ամսաթվերը և մատակարարի անունը: Երկրորդ աղյուսակը՝ phone_invoice_detail
, հիմնված է հիմնականում զանգերի տեղեկամատյանների վրա:
phone_invoice_detail
-ն ունի օտար բանալի՝ invoice_id
, որը մուտքագրվում է phone_invoice(id)
: Սա ստեղծում է բաժնետոմս-ստանդարտ վարպետ-դետալ հարաբերություններ:
Մենք օգտագործել ենք ApEx Data Load Wizard-ը՝ մեր օգտվողների համար ներմուծման հնարավորությունը կարգավորելու համար: Բայց ես պետք է նշանակեմ invoice_id
-ը յուրաքանչյուր ներմուծված տողի համար:
Ներկայումս ես ունեմ հեռախոսի հաշիվ-ապրանքագրի էջ: Օգտատերերը սեղմում են կոճակը՝ «Ներմուծել տվյալներ հաշիվ-ապրանքագրի համար», որը ճյուղավորվում է Տվյալների բեռնման մոգ և սահմանում է էջի տարր՝ P1000_INVOICE_ID
այդ հաշիվ-ապրանքագրի ID-ի արժեքով՝ P999_ID
:
Երբ օգտատերը սկսում է գործընթացը, տրամադրված CSV-ի տվյալները ունեն բոլոր դաշտերը բացի հաշիվ-ապրանքագրի ID-ից: Այն, ինչ ես ուզում եմ, այն է, որ հիմքում ընկած աղյուսակի այդ սյունակը -- invoice_id
-- սահմանվի P1000_INVOICE_ID
արժեքով:
Իմ ներկայիս ուշադրությունը փոխակերպման կանոնների օգտագործման վրա է: Սա ահռելի հիասթափեցնող էր, քանի որ փաստաթղթերը ձեզ ոչինչ չեն ասում դրանց մասին և չկան օրինակներ:
Փոխակերպումներ, որոնք ես փորձել եմ.
-- PL/SQL Expression:
:INVOICE_ID := :P1000_INVOICE_ID
:INVOICE_ID := :P999_ID
SELECT :P1000_INVOICE_ID INTO :INVOICE_ID FROM DUAL
SELECT :P999_ID INTO :INVOICE_ID FROM DUAL
-- Replace:
-- Expression 1 Expression 2
:P1001_INVOICE_ID :INVOICE_ID
:P999_INVOICE_ID :INVOICE_ID