DROP FUNCTION

DROP FUNCTION — 함수 삭제

요약

DROP FUNCTION [ IF EXISTS ] 이름 [ ( [ [ 변수종류 ] [ 변수명 ] 변수자료형 [, ...] ] ) ] [, ...]
    [ CASCADE | RESTRICT ]

설명

DROP FUNCTION 명령은 지정한 함수를 삭제한다. 이 명령은 해당 함수의 소유주만 실행 할 수 있다. 같은 이름의 함수가 여러개 있을 수 있기 때문에, 삭제 하려는 함수에는 반드시 해당 매개 변수의 자료형을 입력해야한다. 매개 변수를 지정하지 않으면 해당 스키마에서 그 이름의 함수가 딱 하나만 있어야 한다.

매개 변수

IF EXISTS

해당 함수가 없어도 오류를 내지 않고 알림 메시지만 보여준다.

이름

삭제하려는 (스키마 이름을 포함 할 수도 있는) 함수 이름.

변수종류

함수의 매개 변수 종류로 IN, OUT, INOUT, 또는 VARIADIC을 사용할 수 있다. DROP FUNCTION 명령에서는 함수의 OUT 매개 변수는 조사하지 않기 때문에, 실질적으로는 IN, INOUT, VARIADIC 매개 변수만 지정하면 된다.

변수명

해당 함수의 매개 변수 이름. DROP FUNCTION 명령은 함수의 매개 변수 자료형만 검사하기 때문에, 굳이 이 매개 변수 이름을 지정할 필요는 없으나, 단지 사용자가 알아보기 쉽게 작성하려고 이 구문을 허용하고 있다.

변수자료형

해당 함수에서 사용하는 매개 변수의 자료형. (이 자료형의 이름으로 필요하다면 스키마 이름이 포함될 수도 있다.)

CASCADE

해당 함수와 의존성 관계가 있는 모든 객체를 함께 삭제한다. (해당 함수를 사용하는 트리거 같은 것들) 물론, 삭제될 다른 객제와 관계된 또 다른 객체들도 함께 삭제 한다. (5.14절 참조).

RESTRICT

해당 함수와 의존성 관계가 있는 객체가 있다면 작업을 중지한다. 이 옵션이 기본값이다.

예제

제곱근을 구하는 함수를 삭제하려면:

DROP FUNCTION sqrt(integer);

하나의 명령으로 여러 함수를 삭제하려면:

DROP FUNCTION sqrt(integer), sqrt(bigint);

해당 스키마에 해당 이름의 함수가 하나 뿐일 때:

DROP FUNCTION update_employee_salaries;

윗 명령은 아래 명령과 다르다:

DROP FUNCTION update_employee_salaries();

이 경우는 해당 함수의 입력 인자가 없는 함수를 지우는 것이고, 그 위에 있는 것은 입력 인자의 개수와 상관 없이, 해당 스키마 안에 있는 그 이름의 함수를 삭제하는 것이다.

호환성

표준 SQL에서도 DROP FUNCTION 명령을 제공하나 다음은 PostgreSQL 확장 기능이다:

  • 표준 SQL에서는 하나의 명령으로 하나의 함수만 삭제

  • IF EXISTS 옵션

  • 인자 종류와 인자 이름 지정

관련 항목

CREATE FUNCTION, ALTER FUNCTION, DROP PROCEDURE, DROP ROUTINE