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!

copy a row and insert new row on same table

Ricky007Feb 29 2016 — edited Mar 1 2016

Dear Experts,

                           copy a row and insert new row  on same table when column cardnumber_hashed matches in both TEMP_BACK and MAIN_table.

CREATE TABLE TEMP_BACK

(

CARDNUMBER_HASHED VARCHAR2(30),

NEWCARDNUMBER_HASHED VARCHAR2(30),

OPERATION VARCHAR2(30)

);

Insert into TEMP_BACK (CARDNUMBER_HASHED,NEWCARDNUMBER_HASHED,OPERATION) values ('f36nha3s7JfdRcmwR+f2QuA3o7c=','JQwvV8bmSgoFzj1Q3XU9qj9u1yw=','COPY');

CREATE TABLE MAIN_table

(

CARDHOLDER_NAME VARCHAR2(30),

CARDNUMBER_HASHED VARCHAR2(30) primary key,

BIN_ID VARCHAR2(30),

OPERATION VARCHAR2(30),

EMAIL_ADDRESS VARCHAR2(30)

);

Insert into MAIN_table (CARDHOLDER_NAME,CARDNUMBER_HASHED,BIN_ID,OPERATION,EMAIL_ADDRESS) values('JOHN','f36nha3s7JfdRcmwR+f2QuA3o7c=',201604843440554,'COPY','JOHN@GMAIL.COM');

Here i tried

-------------------------

  declare

  begin

  V_copy_DATA number;

  SELECT COUNT(1)

    INTO V_copy_DATA

    FROM TEMP_BACK a

    WHERE a.OPERATION='COPY'

AND EXISTS

      (SELECT 1 FROM MAIN_table b WHERE b.CARDNUMBER_HASHED = a.CARDNUMBER_HASHED;

if V_copy_DATA>0 then

INSERT

      INTO MAIN_table

        (

         CARDHOLDER_NAME,

          CARDNUMBER_HASHED

         

         

        )

      SELECT CARDHOLDER_NAME,

            NEWCARDNUMBER_HASHED

        

      FROM TEMP_BACK T2

      WHERE T2.OPERATION='COPY' 

AND t2.CARDNUMBER_HASHED in

(SELECT CARDNUMBER_HASHED from MAIN_table);

commit;

end if;

end;

     

     Desired output

Here i want cardnumber_hashed should be replaced as NEWCARDNUMBER_HASHED from TEMP_BACK table and insert rest of the data should remain as it is.

CARDHOLDER_NAME               CARDNUMBER_HASHED                                                 BIN_ID                     OPERATION                      EMAIL_ADDRESS
JOHN                        f36nha3s7JfdRcmwR+f2QuA3o7c=  201604843440554
COPY                     
JOHN@GMAIL.COM  
JOHN                        JQwvV8bmSgoFzj1Q3XU9qj9u1yw=                                        201604843440554              COPY                          JOHN@GMAIL.COM
This post has been answered by Paulzip on Feb 29 2016
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Mar 29 2016
Added on Feb 29 2016
5 comments
1,518 views