{{htmlmetatags> metatag-description=(함수 생성, 함수 수정, 함수 삭제, Function, 데이터베이스, DBMS, SQL, MySQL, MariaDB, MSSQL, Oracle, Tibero, PostgreSQL) metatag-og:description=(함수 생성, 함수 수정, 함수 삭제, Function, 데이터베이스, DBMS, SQL, MySQL, MariaDB, MSSQL, Oracle, Tibero, PostgreSQL) }} ====== 함수 ====== 최소 지원 버전은 약간의 차이가 있을 수 있습니다. ===== MySQL/MariaDB ===== /* MySQL 5.0.2 이상/MariaDB 5.1 이상 */ DELIMITER $$ -- 생성 CREATE FUNCTION {함수}( IN {입력변수} {타입} -- IN 키워드 생략 가능 ) RETURNS {리턴 타입} {DETERMINISTIC | NOT DETERMINISTIC} {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA} -- 생략 가능 BEGIN DECLARE {변수} {타입}; /* 쿼리 작성 (트랜잭션 사용 제약) */ RETURN {리턴 값}; -- RETURN {변수}; END $$ DELIMITER ; -- 삭제 DROP FUNCTION {함수}; /* MySQL 5.0.10 이상/MariaDB 5.1 이상 */ -- 삭제 DROP FUNCTION IF EXISTS {함수}; /* MariaDB 10.1.3 이상 */ DELIMITER $$ -- 생성/수정 CREATE OR REPLACE FUNCTION {함수}( IN {입력변수} {타입} -- IN 키워드 생략 가능 ) RETURNS {리턴 타입} {DETERMINISTIC | NOT DETERMINISTIC} {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA} -- 생략 가능 BEGIN DECLARE {변수} {타입}; /* 쿼리 작성 (트랜잭션 사용 제약) */ RETURN {리턴 값}; -- RETURN {변수}; END $$ DELIMITER ; ===== MSSQL ===== /* MSSQL 2000 이상 */ -- 생성 CREATE FUNCTION {함수}( @{입력변수} {타입} ) RETURNS {리턴 타입} AS BEGIN DECLARE @{변수} {타입}; /* 쿼리 작성 (트랜잭션 사용 제약) */ RETURN {리턴 값}; -- RETURN @{변수}; END; GO -- 수정 ALTER FUNCTION {함수}( @{입력변수} {타입} ) RETURNS {리턴 타입} AS BEGIN DECLARE @{변수} {타입}; /* 쿼리 작성 (트랜잭션 사용 제약) */ RETURN {리턴 값}; -- RETURN @{변수}; END; GO -- 삭제 DROP FUNCTION {함수}; /* MSSQL 2016 이상 */ -- 생성/수정 CREATE OR ALTER FUNCTION {함수}( @{입력변수} {타입} ) RETURNS {리턴 타입} AS BEGIN DECLARE @{변수} {타입}; /* 쿼리 작성 (트랜잭션 사용 제약) */ RETURN {리턴 값}; -- RETURN @{변수}; END; GO -- 삭제 DROP FUNCTION IF EXISTS {함수}; ===== Oracle/Tibero ===== /* Oracle 8i 이상/Tibero 5 이상 */ -- 생성 CREATE FUNCTION {함수} ( -- 생성/수정 -- CREATE OR REPLACE FUNCTION {함수} ( {입력변수} IN {타입} -- IN 키워드 생략 가능 ) RETURN {리턴 타입} IS | AS {변수} {타입}; BEGIN /* 쿼리 작성 (트랜잭션 사용 제약) */ RETURN {리턴 값}; -- RETURN {변수}; END; / -- 삭제 DROP FUNCTION {함수}; /* Oracle 23c 이상 */ -- 삭제 DROP FUNCTION IF EXISTS {함수}; ===== PostgreSQL ===== /* PostgreSQL 7.3 이상 (Single Quote 방식) */ -- 생성 CREATE FUNCTION {함수} ( -- 생성/수정 -- CREATE OR REPLACE FUNCTION {함수}( IN {입력변수} {타입} -- IN 키워드 생략 가능 ) RETURNS {리턴 타입} AS ' DECLARE {변수} {타입}; BEGIN /* 쿼리 작성 (트랜잭션 사용 제약) */ RETURN {리턴 값}; -- RETURN {변수}; END; ' LANGUAGE plpgsql; -- 삭제 DROP FUNCTION {함수}; /* PostgreSQL 8.0 이상 (Dollar Quoting 방식) */ -- 생성 CREATE FUNCTION {함수} ( -- 생성/수정 -- CREATE OR REPLACE FUNCTION {함수}( IN {입력변수} {타입} -- IN 키워드 생략 가능 ) RETURNS {리턴 타입} AS $$ DECLARE {변수} {타입}; BEGIN /* 쿼리 작성 (트랜잭션 사용 제약) */ RETURN {리턴 값}; -- RETURN {변수}; END; $$ LANGUAGE plpgsql; /* PostgreSQL 8.2 이상 */ -- 삭제 DROP FUNCTION IF EXISTS {함수}; {{tag>"쿼리" "Query" "기본" "객체"}}