Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Convert Horizontal CSV Template to a Tabular Format

Migs_IsipApr 15 2017 — edited Apr 17 2017

Disclaimer: Please bear with the long, detailed question. I want to make the requirement as clear as possible.

The below Oracle EBS seeded table (`PER_PEOPLE_EXTRA_INFO`) stores an employee's Extra Information:

PERSON_EXTRA_INFO_IDPERSON_IDEXTRA_INFORMATIONINFORMATION_CATEGORYINFORMATION1INFORMATION2INFORMATION3...
INFORMATION10
111111Academic RankNext Academic RankProfessorY10.5...(NULL)
211111Academic RankAcademic RankAss.ProfessorN(NULL)...(NULL)
311111Academic RankEffective Start Date01-JAN-2017(NULL)(NULL)...(NULL)
411111Academic RankEffective End Date31-DEC-4712(NULL)(NULL)...(NULL)
511111Alien Income ForecastIncome_codeP(NULL)(NULL)...(NULL)
611111Alien Income ForecastDate20171DEC...(NULL)
711111Alien Income ForecastAmount10000Tax(NULL)...(NULL)
811111Alien Income ForecastEffective Start Date01-JAN-2017(NULL)(NULL)...(NULL)
911111Alien Income ForecastEffective End Date31-DEC-4712(NULL)(NULL)...(NULL)
1022222Academic RankNext Academic RankMasterN11.5...(NULL)
1122222Academic RankAcademic RankProfessorY(NULL)...(NULL)
1222222Academic RankEffective Start Date01-JAN-2017(NULL)(NULL)...(NULL)
1322222Academic RankEffective End Date31-DEC-4712(NULL)(NULL)...(NULL)
1422222Alien Income ForecastIncome_codeX1(NULL)(NULL)...(NULL)
1522222Alien Income ForecastDate20171APR...(NULL)
1622222Alien Income ForecastAmount100000000Tax-Free(NULL)...(NULL)
1722222Alien Income ForecastEffective Start Date01-JAN-2017(NULL)(NULL)...(NULL)
1822222Alien Income ForecastEffective End Date31-DEC-4712(NULL)(NULL)...(NULL)

All Information Columns have the data type VARCHAR2, but some store dates (like in the above sample).

This table is being populated by a Oracle EBS Seeded API Package (HR_PERSON_EXTRA_INFO_API.CREATE_PERSON_EXTRA_INFO).

I am tasked to create an upload process that would use a CSV template and interface information to the API.

The below is a sample of the CSV Template:

               

EMPLOYEE_NUMBERNext Academic RankMax Academic RankMax ScoreAcademic RankPromotion RankAcademic Rank Start DateAcademic Rank End DateIncome Code

Date

(YYYY)

Date

(MON)

Date

(DD)

AmountTax?Income Start DateIncome End Date
33333ProfessorY10.1Ass.ProfessorY01-JAN-201731-DEC-4712P2017JAN110000Tax01-JAN-201731-DEC-4712
44444Ass.ProfessorN9.7StudentN01-JAN-201731-DEC-4712R2017JAN150000Non Tax01-JAN-201731-DEC-4712

I'm planning to use an External Table to read the CSV Template and pass the information to the API And use something like the code block below (please note the comments):

DECLARE

    CURSOR EXT_CUR IS

    SELECT  EMPLOYEE_NUMBER   

        ,   NEXT_ACADEMIC_RANK        -- Academic Rank (Next Academic Rank) INFORMATION1   

        ,   MAX_ACADEMIC_RANK         -- Academic Rank (Next Academic Rank) INFORMATION2   

        ,   MAX_SCORE                 -- Academic Rank (Next Academic Rank) INFORMATION3 

        ,   ACADEMIC_RANK             -- Academic Rank (Academic Rank) INFORMATION1   

        ,   PROMOTION_RANK            -- Academic Rank (Academic Rank) INFORMATION2    

        ,   ACADEMIC_RANK_START_DATE  -- Academic Rank (Effective Start Date) INFORMATION1

        ,   ACADEMIC_RANK_END_DATE    -- Academic Rank (Effective End Date) INFORMATION1

        ,   INCOME_CODE               -- Alien Income Forecast (Income_code) INFORMATION1

        ,   DATE_YYYY                 -- Alien Income Forecast (Date) INFORMATION1

        ,   DATE_MON                  -- Alien Income Forecast (Date) INFORMATION2

        ,   DATE_DD                   -- Alien Income Forecast (Date) INFORMATION3

        ,   AMOUNT                    -- Alien Income Forecast (Amount) INFORMATION1

        ,   TAX                       -- Alien Income Forecast (Amount) INFORMATION2

        ,   INCOME_START_DATE         -- Alien Income Forecast (Effective Start Date) INFORMATION1

        ,   INCOME_END_DATE           -- Alien Income Forecast (Effective End Date) INFORMATION1                         

    FROM    SAMPLE_EXTRA_INFO_EXT;    -- this is the external table

BEGIN

    FOR EXT_REC IN EXT_CUR LOOP

        SAMPLE_PKG.CREATE_EXTRA_INFO

        (

            P_EMPLOYEE_NUMBER       => EXT_REC.EMPLOYEE_NUMBER     

        ,   P_EXTRA_INFORMATION     => EXT_REC.EXTRA_INFORMATION    -- This is my problem, how do i make it vertical?

        ,   P_INFORMATION_CATEGORY  => EXT_REC.INFORMATION_CATEGORY

        ,   P_INFORMATION1          => EXT_REC.INFORMATION1        

        ,   P_INFORMATION2          => EXT_REC.INFORMATION2        

        ,   P_INFORMATION3          => EXT_REC.INFORMATION3        

        ,   P_INFORMATION4          => EXT_REC.INFORMATION4        

        ,   P_INFORMATION5          => EXT_REC.INFORMATION5        

        ,   P_INFORMATION6          => EXT_REC.INFORMATION6        

        ,   P_INFORMATION7          => EXT_REC.INFORMATION7        

        ,   P_INFORMATION8          => EXT_REC.INFORMATION8        

        ,   P_INFORMATION9          => EXT_REC.INFORMATION9        

        ,   P_INFORMATION10         => EXT_REC.INFORMATION10       

        );

   

    END LOOP;

   

END;

Here are my problems:

1. The template is "horizontal", but the API is "vertical".

2. Not all Extra Information use the same Information Columns (some use column INFORMATION1 - 3, some use only column INFORMATION1 ).

With that said, how can i transform the template above into a valid format that the API can use?

I was thinking of using Pivot or UnPivot in the External Table but i'm not quite sure on how to approach the requirement.

A Pure SQL approach is preferred, but using PL/SQL would be fine.

 

Oracle Version

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

PL/SQL Release 11.2.0.4.0 - Production

"CORE 11.2.0.4.0 Production"

TNS for Solaris: Version 11.2.0.4.0 - Production

NLSRTL Version 11.2.0.4.0 - Production

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on May 15 2017
Added on Apr 15 2017
8 comments
586 views