반응형
Delimiter
SQL에서 프로시저를 사용할때, DELIMITER 을 사용한다. Delimiter 명령어는 이러한 구문 문자를 정의하는 기능이다. 대부분의 데이터베이스에서는 구분자를 디폴트로 세미콜론(;)을 사용한다. 이는 문법의 끝을 나타내는 역할을 한다.
사용법 :
DELIMITER $$
Delimiter 을 사용하는 이유
프로시저 내부의 SQL 문이 세미콜론으로 나뉘어진 여러 문장인 경우, 문장 구분이 어렵기 때문에 오류가 발생한다. 일련의 프로시저 전체가 아닌, 세미콜론에서 SQL이 나뉘어져 서버로 보내진다. 이러한 이유 때문에 하나의 프로시저 전체를 서버로 보내기 위해서는 DELIMITER 를 이용해 구분자를 재정의해줘야 한다.
DELIMITER $$
CREATE OR REPLACE DEFINER=`사용자명`@`%` PROCEDURE 프로시저명 (
IN 파라메터명 varchar(50)
)
BEGIN
select / insert/ update/ delete 문 ...;
END$$
DELIMITER ;
주의 !!
- 마지막에 원래의 세미콜론으로 delimiter 재정의해줘야한다.
- 몇몇 데이터베이스에서 의미가 있는 특정 문자열은 피해줘야함. (mySQL의 경우 backslash(\)는 escape 문임.)
- 프로그램 내부에 세미콜론이 사용되지 않으면 delimiter 은 필요없음.
정리
- 세미콜론을 이용하여 프로시저 내부의 문장을 구분하기 위해서이며, 구분이 필요없는 경우 procedure 정의에 필수적인 요소는 아니다.
반응형