john1953
asked on
Need Help-Selecting specific rows to update
Below is a Oracle 9i PL/SQL statements I am trying to run. I am receiving an ORA-00933 error (SQL command not properly ended).
========================== ========== ========== ========== ========== ==========
These are the tables invovled:
CREATE TABLE PRISMM.DOCRELATION
(
DOCRELATION_PK NUMBER(10),
DOCPARENTNAME VARCHAR2(30 BYTE),
DOCPARENT NUMBER(10),
DOCCHILDNAME VARCHAR2(30 BYTE),
DOCCHILD NUMBER(10)
)
CREATE TABLE PRISMQ.RESERVATION
(
RESERVATION_PK NUMBER(10),
ROOMSTAYRESERVATION VARCHAR2(10 BYTE),
CONFIRMATIONID VARCHAR2(20 BYTE),
RESERVATIONID VARCHAR2(20 BYTE),
RESERVATIONORIGINATORCODE VARCHAR2(10 BYTE),
ORIGINALBOOKINGDATE DATE,
CANCELLATIONID VARCHAR2(20 BYTE),
CANCELORIGINATORCODE VARCHAR2(10 BYTE),
CANCELLATIONDATE DATE,
STAYDATERANGE DATE,
RECTYPE VARCHAR2(10 BYTE),
WEEKNUMBER VARCHAR2(40 BYTE),
ORIGINALUSERID VARCHAR2(10 BYTE),
LASTCHANGEUSERID VARCHAR2(10 BYTE),
LASTCHANGEDATE DATE,
RESERVATION_DBDATE DATE,
RESV_RESCOMMENT_FK NUMBER(10),
RESV_SELECTEDMEMBERSHIP_FK NUMBER(10),
RESV_RESGUEST_FK NUMBER(10),
RESV_SPECIALREQUEST_FK NUMBER(10),
RESV_SERVICE_FK NUMBER(10),
RESV_ROOMSTAY_FK NUMBER(10),
RESV_PROFILE_FK NUMBER(10),
RESV_HOTELREFERENCE_FK NUMBER(10),
RESV_LEGACYPROFILE_FK NUMBER(10),
RESV_RESVMARKETING_FK NUMBER(10)
)
========================== ========== ========== ========== ========== ======
What I am trying to do is to select and update specific rows in table "PRISMQ.RESERVATION" where the
" r. reservation_dbdate" equals to todays date (in mm/dd/yyyy format). The values stored in the " r.reservation_dbdate" column is in mm/dd/yyyy.
All other rows where the " r.reservation_dbdate" does not equal to todays date I want to dropped it from further processing.
If a row does equal to todays date I then want to further qualify for updating by comparing to table "prismm.docrelation".
This is done by:
1. comparing the value stored in column "d.docparent" (prismm.docrelation) to "r.reservation_pk "
(prismq.reservation)
2. d.docparentname equals to "RESERVATION"
3. d.docchildname equals to "LEGACYPROFILE"
If any of the above three conditions fails I want to drop the row in "PRISMQ.RESERVATION" from any further update consideration.
Let me know if there is a better way of coding.
Here is the SQL code in question
========================== ========== ========== ========== ========== =======
UPDATE PRISMQ.RESERVATION r
SET resv_legacyprofile_fk =
(SELECT r.reservation_pk FROM PRISMM.RESERVATION r
WHERE TRUNC(SYSDATE) = r.reservation_dbdate)
SELECT d.docchild FROM prismm.docrelation d
WHERE r.reservation_pk = d.docparent
AND d.docparentname = 'RESERVATION'
AND d.DOCCHILDNAME = 'LEGACYPROFILE';
COMMIT;
Thanks.
==========================
These are the tables invovled:
CREATE TABLE PRISMM.DOCRELATION
(
DOCRELATION_PK NUMBER(10),
DOCPARENTNAME VARCHAR2(30 BYTE),
DOCPARENT NUMBER(10),
DOCCHILDNAME VARCHAR2(30 BYTE),
DOCCHILD NUMBER(10)
)
CREATE TABLE PRISMQ.RESERVATION
(
RESERVATION_PK NUMBER(10),
ROOMSTAYRESERVATION VARCHAR2(10 BYTE),
CONFIRMATIONID VARCHAR2(20 BYTE),
RESERVATIONID VARCHAR2(20 BYTE),
RESERVATIONORIGINATORCODE VARCHAR2(10 BYTE),
ORIGINALBOOKINGDATE DATE,
CANCELLATIONID VARCHAR2(20 BYTE),
CANCELORIGINATORCODE VARCHAR2(10 BYTE),
CANCELLATIONDATE DATE,
STAYDATERANGE DATE,
RECTYPE VARCHAR2(10 BYTE),
WEEKNUMBER VARCHAR2(40 BYTE),
ORIGINALUSERID VARCHAR2(10 BYTE),
LASTCHANGEUSERID VARCHAR2(10 BYTE),
LASTCHANGEDATE DATE,
RESERVATION_DBDATE DATE,
RESV_RESCOMMENT_FK NUMBER(10),
RESV_SELECTEDMEMBERSHIP_FK
RESV_RESGUEST_FK NUMBER(10),
RESV_SPECIALREQUEST_FK NUMBER(10),
RESV_SERVICE_FK NUMBER(10),
RESV_ROOMSTAY_FK NUMBER(10),
RESV_PROFILE_FK NUMBER(10),
RESV_HOTELREFERENCE_FK NUMBER(10),
RESV_LEGACYPROFILE_FK NUMBER(10),
RESV_RESVMARKETING_FK NUMBER(10)
)
==========================
What I am trying to do is to select and update specific rows in table "PRISMQ.RESERVATION" where the
" r. reservation_dbdate" equals to todays date (in mm/dd/yyyy format). The values stored in the " r.reservation_dbdate" column is in mm/dd/yyyy.
All other rows where the " r.reservation_dbdate" does not equal to todays date I want to dropped it from further processing.
If a row does equal to todays date I then want to further qualify for updating by comparing to table "prismm.docrelation".
This is done by:
1. comparing the value stored in column "d.docparent" (prismm.docrelation) to "r.reservation_pk "
(prismq.reservation)
2. d.docparentname equals to "RESERVATION"
3. d.docchildname equals to "LEGACYPROFILE"
If any of the above three conditions fails I want to drop the row in "PRISMQ.RESERVATION" from any further update consideration.
Let me know if there is a better way of coding.
Here is the SQL code in question
==========================
UPDATE PRISMQ.RESERVATION r
SET resv_legacyprofile_fk =
(SELECT r.reservation_pk FROM PRISMM.RESERVATION r
WHERE TRUNC(SYSDATE) = r.reservation_dbdate)
SELECT d.docchild FROM prismm.docrelation d
WHERE r.reservation_pk = d.docparent
AND d.docparentname = 'RESERVATION'
AND d.DOCCHILDNAME = 'LEGACYPROFILE';
COMMIT;
Thanks.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER