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