SQL의 명령문은 마지막에 세미콜론 (;)으로 끝납니다. 세미콜론은 하나의 쿼리 명령을 완 성하는 구분 기호입니다. 세미콜론으로 완성된 쿼리는 바로 실행됩니다.

세미콜론 구분 기호는 프로시저를 작성할 때 잘못된 구분의 종료로 인하여 오류가 발생합 니다. 프로시저 안에 포함되는 SQL 쿼리 문장이 세미콜론을 포함하고 있기 때문에 정확 한 프로시저의 문장을 생성할 수 없습니다.

이런 경우 임시로 정의되어 있는 세미콜론 구분 기호를 다른 기호로 변경해 두면 구분 기 호 충돌로 인한 오류 동작을 예방할 수 있습니다.

DELIMITER 명령을 사용하면 현재의 사용 구분자인 세미콜론을 임시로 다른 값으로 변 경해 놓을 수 있습니다.

| 쿼리 문법 |

DELIMITER // 

위의 쿼리 문법은 현재의 구분 기호 세미콜론을 // 기호로 임시 변경을 합니다. 명령을 입 력할 때는 DELIMITER와 // 사이에 공백이 하나 있어야 합니다.

다시 원래의 세미콜론으로 복원을 한 때는 다음과 같이 작성하면 됩니다.

DELIMITER ; 

임시로 변경해 놓은 구분 기호 //를 다시 세미콜론으로 변경합니다. 명령을 입력할 때는 DELIMITER와 세미콜론 사이에 공백이 하나 있어야 합니다.

22.2.1 쿼리 실습

구분 기호 변경과 간단한 프로시저 문장을 작성해 보도록 하겠습니다.

| 예제 쿼리 |

delimiter //
create procedure mem1()
begin
select * from members;
end
//
delimiter ;

먼저 delimiter //를 통하여 구분 기호 세미콜론을 //로 변경합니다. 프로시저 구분을 작 성합니다. 프로시저 안에서 select * from members;와 같이 세미콜론을 포함해도 오류 가 발생되지 않습니다.

| 콘솔 실습 화면 |

mysql> delimiter //
mysql> create procedure mem1()
    -> begin
    -> select * from members;
    -> end
    -> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;

마지막에 프로시저의 마감 구분 기호 //를 작성합니다. 원래는 구분 기호 세미콜론을 작성해야 하지만 현재 구분 기호를 //로 변경했기 때문입니다. 다시 구분 기호를 세미콜론으로 복원해 놓습니다.

22.2.2 PHP 실습

PHP 코드를 통하여 구분 기호를 변경하는 명령 메서드를 생성해 보도록 하겠습니다.

| PHP 예제 | mysql.class.php 파일에 메서드 예제를 추가합니다.

public function delimiter($code)
{
            if ($code) {
                $queryString = "DELIMITER $code";
                // 쿼리를 전송합니다.
                if (mysqli_query($this->dbcon, $queryString)=== TRUE) {
                    $this->msgEcho("쿼리성공] ".$queryString);
                    $this->msgEcho(" DELIMITER 변경!");

                    // 객체 반환, 매서드체인
                    return $this; 

                } else {
                    $this->msgEcho("Error] ".$queryString);
                }

            } else {
                $this->msgEcho("Error] delimiter 키명을 적어주세요.");
            }

}