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 키명을 적어주세요.");
}
}