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!

UPDATE multiple columns with conditional SET parameters

515650Sep 18 2009 — edited Sep 18 2009
I have a procedure that updates multiple columns of a table using the procedure's parameter. Is it possible to have one update statement with conditional SET parameter?
CREATE TABLE TEMP
(POL_NUM NUMBER,
OED DATE,
TERM NUMBER,
TRANS_CD CHAR(2));

INSERT INTO TEMP VALUES (1, '1 AUG 2009', 12, 'NB');
INSERT INTO TEMP VALUES (2, '4 AUG 2009', 12, 'XL');
INSERT INTO TEMP VALUES (3, '2 AUG 2009', 12, 'RN');
COMMIT;

CREATE OR REPLACE PROCEDURE TMP_PROC (
  pPOL_NUM NUMBER,
  pOED IN DATE,
  pTERM IN NUMBER,
  pTRANS_CD CHAR2)
AS
BEGIN
  IF pOED IS NOT NULL THEN
    UPDATE TEMP SET OED = pOED WHERE POL_NUM = pPOL_NUM;
  END IF;

  IF pTERM IS NOT NULL THEN
    UPDATE TEMP SET TERM = pTERM WHERE POL_NUM = pPOL_NUM;
  END IF;

  IF pTRAN_CD IS NOT NULL THEN
    UPDATE TEMP SET TRANS_CD = pTRANS_CD WHERE POL_NUM = pPOL_NUM;
  END IF;
  COMMIT;
EXCEPTION
  WHEN OTHERS THEN
     NULL;
END;
Is it possible to replace multiple IFs from the code to have only one UPDATE statement with condition that update the column only if the passed parameter is not null? In real scenario I have more than 3 columns and I don't want to write many IF blocks.

Please help Gurus!!

Edited by: Kuul13 on Sep 18, 2009 1:26 PM
This post has been answered by Christian Balz on Sep 18 2009
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Oct 16 2009
Added on Sep 18 2009
5 comments
7,770 views