AMcoder - javascript, python, java, html, php, sql

Ինչպե՞ս կարող եմ ընդհանուր օտար բանալի հատկացնել բոլոր գրառումներին, որոնք տեղադրված են տվյալների բեռնման հրաշագործի միջոցով:

Ես ունեմ 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
03.07.2013

Պատասխանները:


1

Ինչպես տեսնում եք, APEX-ը ներմուծման համար ստեղծում է 4 էջ: Եվ այն օգտագործում է LOAD_CONTENT անունով գագաթնակետային հավաքածու՝ ներմուծված տվյալները պահելու համար: Այսպիսով, դուք կարող եք փոխել այս հավաքածուն, նախքան այն կբեռնվի աղյուսակում:

Գնացեք «Տվյալների վավերացում» անունով էջ (այս էջն ունի հաշվետվություն Data Validation) և ավելացրեք էջի գործընթացը՝ հետևյալ պարամետրերով.

Տեսակ՝ PL/SQL անանուն բլոկ

Գործընթացի կետ՝ Բեռնված վիճակում – Վերնագրի առաջ

Աղբյուր:

declare 
  -- Local variables here
  i integer;
begin
  for i in (
    select t.seq_id
     from apex_collections t
     where t.collection_name = 'LOAD_CONTENT'
  ) loop
    apex_collection.update_member_attribute(
      p_collection_name => 'LOAD_CONTENT',
      p_seq => i.seq_id,
      p_attr_number => 3, -- here number of your column you want update
      p_attr_value => :P1000_INVOICE_ID -- value 
    );      
  end loop;  
end;

Բայց փոխեք ձեր սյունակի այս գործընթացի համարը: Ես փորձել եմ այս օրինակը իմ APEX 4.1 տարբերակում, այն լավ է աշխատում:

03.07.2013
  • Շնորհակալություն, ես երկուշաբթի կնայեմ դրան: 06.07.2013
  • Այն աշխատում է, բայց ինչպես երբեմն պատահում է, պահանջները փոխվել են։ 09.07.2013
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..