{{htmlmetatags> metatag-description=(프로시저 생성, 프로시저 수정, 프로시저 삭제, Procedure, 데이터베이스, DBMS, SQL, MySQL, MariaDB, MSSQL, Oracle, Tibero, PostgreSQL) metatag-og:description=(프로시저 생성, 프로시저 수정, 프로시저 삭제, Procedure, 데이터베이스, DBMS, SQL, MySQL, MariaDB, MSSQL, Oracle, Tibero, PostgreSQL) }} ====== 프로시저 ====== 최소 지원 버전은 약간의 차이가 있을 수 있습니다. ===== MySQL/MariaDB ===== /* MySQL 5.0.1 이상/MariaDB 5.1 이상 */ DELIMITER $$ -- 생성 CREATE PROCEDURE {프로시저}( IN {입력변수} {타입}, -- IN 키워드 생략 가능 OUT {출력변수} {타입}, INOUT {입출력변수} {타입} ) {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA} -- 생략 가능 BEGIN DECLARE {변수} {타입}; /* 쿼리 작성 (트랜잭션 사용 가능) */ END $$ DELIMITER ; -- 삭제 DROP PROCEDURE {프로시저}; /* MySQL 5.0.10 이상/MariaDB 5.1 이상 */ -- 삭제 DROP PROCEDURE IF EXISTS {프로시저}; /* MariaDB 10.1.3 이상 */ DELIMITER $$ -- 생성/수정 CREATE OR REPLACE PROCEDURE {프로시저}( IN {입력변수} {타입}, -- IN 키워드 생략 가능 OUT {출력변수} {타입}, INOUT {입출력변수} {타입} ) {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA} -- 생략 가능 BEGIN DECLARE {변수} {타입}; /* 쿼리 작성 (트랜잭션 사용 가능) */ END $$ DELIMITER ; ===== MSSQL ===== /* MSSQL 7.0 이상 */ -- 생성 CREATE PROCEDURE {프로시저} @{입력변수} {타입}, @{출력변수/입출력변수} {타입} OUTPUT, @{입력변수} {타입} READONLY -- Table-Valued Parameter / MSSQL 2008 이상 AS BEGIN SET NOCOUNT ON; DECLARE @{변수} {타입}; /* 쿼리 작성 (트랜잭션 사용 가능) */ END; GO -- 수정 ALTER PROCEDURE {프로시저} @{입력변수} {타입}, @{출력변수/입출력변수} {타입} OUTPUT, @{입력변수} {타입} READONLY -- Table-Valued Parameter / MSSQL 2008 이상 AS BEGIN SET NOCOUNT ON; DECLARE @{변수} {타입}; /* 쿼리 작성 (트랜잭션 사용 가능) */ END; GO -- 삭제 DROP PROCEDURE {프로시저}; /* MSSQL 2016 이상 */ -- 생성/수정 CREATE OR ALTER PROCEDURE {프로시저} @{입력변수} {타입}, @{출력변수/입출력변수} {타입} OUTPUT, @{입력변수} {타입} READONLY -- Table-Valued Parameter AS BEGIN SET NOCOUNT ON; DECLARE @{변수} {타입}; /* 쿼리 작성 (트랜잭션 사용 가능) */ END; GO -- 삭제 DROP PROCEDURE IF EXISTS {프로시저}; ===== Oracle/Tibero ===== /* Oracle 8i 이상/Tibero 5 이상 */ -- 생성 CREATE PROCEDURE {프로시저} ( -- 생성/수정 -- CREATE OR REPLACE PROCEDURE {프로시저} ( {입력변수} IN {타입}, -- IN 키워드 생략 가능 {출력변수} OUT {타입}, {입출력변수} IN OUT {타입} ) IS | AS {변수} {타입}; BEGIN /* 쿼리 작성 (트랜잭션 사용 가능) */ END; / -- 삭제 DROP PROCEDURE {프로시저}; /* Oracle 23c 이상 */ -- 삭제 DROP PROCEDURE IF EXISTS {프로시저}; ===== PostgreSQL ===== /* PostgreSQL 11.0 이상 */ -- 생성 CREATE PROCEDURE {프로시저} ( -- 생성/수정 -- CREATE OR REPLACE PROCEDURE {프로시저}( IN {입력변수} {타입}, -- IN 키워드 생략 가능 OUT {출력변수} {타입}, INOUT {입출력변수} {타입} ) AS $$ DECLARE {변수} {타입}; BEGIN /* 쿼리 작성 (트랜잭션 사용 가능) */ END; $$ LANGUAGE plpgsql; -- 삭제 DROP PROCEDURE {프로시저}; DROP PROCEDURE IF EXISTS {프로시저}; {{tag>"쿼리" "Query" "기본" "객체"}}