DROP ROUTINE — 루틴(routine) 삭제하기
DROP ROUTINE — 루틴(routine) 삭제하기
DROP ROUTINE은 이미 존재하는 루틴의 정의를 제거하는 명령이에요. 여기서 "루틴"은 집계 함수, 일반 함수, 프로시저를 모두 아우르는 용어예요. 즉 함수·프로시저를 통틀어 지우고 싶을 때 편리하죠. 각각에 대한 자세한 세부사항은 DROP AGGREGATE, DROP FUNCTION, DROP PROCEDURE 문서를 함께 보세요.
출처: PostgreSQL 문서
본문
Synopsis
DROP ROUTINE [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]
[ CASCADE | RESTRICT ]
Description
DROP ROUTINE은 이미 존재하는 루틴 하나 이상의 정의를 제거해요. "루틴(routine)"이라는 용어에는 집계 함수, 일반 함수, 프로시저가 모두 포함됩니다. 매개변수에 대한 설명, 더 많은 예시, 추가 세부사항은 DROP AGGREGATE, DROP FUNCTION, DROP PROCEDURE 문서를 참고하세요.
Notes
DROP ROUTINE이 사용하는 조회 규칙은 기본적으로 DROP PROCEDURE와 같아요. 특히 argmode 표시가 없는 인자 목록은 SQL 표준의 정의에 따라 OUT 인자가 포함된 것으로 간주할 가능성이 있다는 그 명령의 동작을 함께 공유합니다. (DROP AGGREGATE와 DROP FUNCTION은 그렇게 하지 않아요.)
같은 이름을 서로 다른 종류의 루틴이 공유하는 경우, 더 구체적인 명령(DROP FUNCTION 등)이 동작할 상황에서도 DROP ROUTINE이 모호성(ambiguity) 오류로 실패할 수 있어요. 인자 타입 목록을 더 신중하게 지정하면 이런 문제도 해결됩니다.
이 조회 규칙은 ALTER ROUTINE이나 COMMENT ON ROUTINE처럼 기존 루틴을 다루는 다른 명령에서도 동일하게 사용됩니다.
Examples
integer 타입용 루틴 foo를 삭제하려면:
DROP ROUTINE foo(integer);
이 명령은 foo가 집계 함수든 함수든 프로시저든 상관없이 동작해요.
Compatibility
이 명령은 SQL 표준을 따르며, 아래 항목은 PostgreSQL의 확장입니다.
- 표준은 명령 하나로 루틴을 하나만 삭제할 수 있어요.
IF EXISTS옵션은 확장이에요.- 인자 모드와 이름을 지정할 수 있는 기능은 확장이고, 모드가 주어지면 조회 규칙이 달라져요.
- 사용자 정의 집계 함수는 확장이에요.