DB

[pl/sql] procedure merge into

호밀밭의밀수꾼 2020. 10. 20. 23:29

/
CREATE OR REPLACE PROCEDURE NEW_JOB_PROC
  (
    --param
    P_JOB_ID IN JOBS.JOB_ID%TYPE,
    P_JOB_TITLE IN JOBS.JOB_TITLE%TYPE,
    P_MIN_SALARY IN JOBS.MIN_SALARY%TYPE,
    P_MAX_SALARY IN JOBS.MAX_SALARY%TYPE
  )
is
BEGIN
  MERGE INTO JOBS J
  USING (SELECT COUNT(*) CNT FROM JOBS WHERE JOB_ID =P_JOB_ID) I
  on (i.cnt =1)
  
  WHEN MATCHED THEN
      UPDATE SET 
        J.JOB_TITLE = P_JOB_TITLE,
        J.MIN_SALARY = P_MIN_SALARY,
        J.MAX_SALARY = P_MAX_SALARY
      WHERE J.JOB_ID = P_JOB_ID
      
  when not matched then    
    INSERT
    (j.JOB_ID, j.JOB_TITLE, j.MIN_SALARY, j.MAX_SALARY)
    VALUES
    (P_JOB_ID, P_JOB_TITLE, P_MIN_SALARY, P_MAX_SALARY);
    
  commit;
END;
/
show err;

/
EXEC NEW_JOB_PROC('sample','sample',2000,2000);
select * from jobs where job_id = 'sample';