{{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" "기본" "객체"}}