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
옵션
인자 종류와 인자 이름 지정