Delimiters

mysql 클라이언트(MariaDB 10.4.6부터는 mariadb라고도 불립니다.)의 기본 구분 기호는 세미콜론(;) 입니다.

저장 프로그램(stored program)을 명령줄에서 작성하는 경우, 통상적인 구분 기호와 BEGIN END 블록 내의 구분 기호를 다르게 해야 할 수 있습니다. 더 잘 이해하기 위해 아래의 예제를 살펴보세요:

CREATE FUNCTION FortyTwo() RETURNS TINYINT DETERMINISTIC
BEGIN
 DECLARE x TINYINT;
 SET x = 42;
 RETURN x;
END; 

만약 위의 코드를 차례로 한 줄씩 입력한다면, mysql 클라이언트는 DECLARE x TINYINT의 끝에 있는 첫번째 세미콜론을 전체 구문의 끝으로 인식할 것입니다. 그러나 이는 부분적인 정의에 불과하므로 아래와 같은 syntax error를 발생시킬 것입니다:

CREATE FUNCTION FortyTwo() RETURNS TINYINT DETERMINISTIC
BEGIN
DECLARE x TINYINT;
ERROR 1064 (42000): You have an error in your SQL syntax; 
check the manual that corresponds to your MariaDB server version
 for the right syntax to use near '' at line 3

이를 해결하기 위한 방법은, DELIMITER 명령을 사용하여 해당 과정 동안에만 별도의 구분 기호를 지정하는 것입니다. 구분 기호는 임의의 어떤 문자 집합이라도 가능하지만, 혼동을 방지하기 위해 뚜렷하게 구분되는 문자 집합으로 지정되어야 합니다. //를 선택하는 것이 일반적이고, Knowledge Base 전체에서도 해당 기호가 사용됩니다.

다음은 새로운 구분 기호를 이용해 mysql 클라이언트에서 성공적으로 함수를 입력하는 방법입니다:

DELIMITER //

CREATE FUNCTION FortyTwo() RETURNS TINYINT DETERMINISTIC
BEGIN
  DECLARE x TINYINT;
  SET x = 42;
  RETURN x;
END 

//

DELIMITER ;

마지막에 구분 기호는 기본 기호인 세미콜론(;)으로 복원됩니다. \g\G 구분 기호는 사용자 지정 구분 기호가 지정된 경우에도 항상 사용 가능합니다.

Comments

Comments loading...
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.