더북(TheBook)

③ 단일 로우 DELETE

DELETE문 역시 UPDATE문과 동일한 방식으로 RETURNING INTO 절을 사용해 삭제된 로우 정보를 가져올 수 있다. 먼저 단일 로우를 삭제하는 DELETE문을 살펴 보자. 사원 테이블을 복사한 emp_bk 테이블을 만들어 삭제해 보자.

입력

    CREATE TABLE emp_bk AS
    SELECT *
      FROM employees;

결과

    table EMP_BK이(가) 생성되었습니다.

입력

    DECLARE
      vn_salary   NUMBER := 0;
      vs_empname  VARCHAR2(30);
    BEGIN
      -- 171번 사원 삭제
      DELETE emp_bk
       WHERE employee_id = 171
      RETURNING emp_name, salary
           INTO vs_empname, vn_salary;

      COMMIT;

      DBMS_OUTPUT.PUT_LINE('삭제 사원명 : ' || vs_empname);
      DBMS_OUTPUT.PUT_LINE('삭제된 급여 : ' || vn_salary);
    END;

결과

    삭제사원명 : William Smith
    삭제된급여 : 7400

171번 사원이 삭제됐지만 RETURNING INTO 절을 사용해 삭제된 사원의 정보를 가져왔다. 위 예제에서는 사원명과 급여만 가져왔지만 삭제된 로우의 어느 컬럼이라도 그 값을 변수에 담아 올 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.