CREATE OR REPLACE PROCEDURE CHANGE (
i_empno emp.empno%TYPE
, i_ename emp.ename%TYPE DEFAULT NULL
, i_job emp.job%TYPE DEFAULT NULL
, i_hiredate emp.hiredate%TYPE DEFAULT NULL
, i_sal emp.sal%TYPE DEFAULT NULL
, i_comm emp.comm%TYPE DEFAULT NULL
, i_deptno emp.deptno%TYPE DEFAULT NULL
)
IS
BEGIN
UPDATE emp
SET ename = i_ename
, job = NVL (i_job, job)
, hiredate = NVL (i_hiredate, hiredate)
, sal = NVL (i_sal, sal)
, comm = NVL (i_comm, comm)
, deptno = NVL (i_deptno, deptno)
WHERE emp.empno = i_empno;
END;
/* Value before call */
SELECT comm
FROM emp
WHERE empno = 7499
/
/* 300 */
/* Calling Code will NOT set comm to null*/
BEGIN
-- Call the procedure
pk_emp.CHANGE (i_empno => 7499, i_comm => NULL);
END;
/
/* Value after call */
SELECT comm
FROM emp
WHERE empno = 7499
/
/* 300 */