MySQL 저장 프로시저를 'BEGIN'과 'END' 없이 생성하기
MySQL에서는 저장 프로시저를 'BEGIN'과 'END' 키워드 없이도 생성할 수 있습니다. 두 키워드가 포함된 경우와 동일한 방식으로 작성하되, BEGIN과 END 부분만 생략하면 됩니다. 다만 이 방식은 프로시저 본문이 단일 SQL 문장일 때만 사용할 수 있다는 점에 유의해야 합니다.
다음 예제는 'BEGIN'과 'END' 없이 Student_info 테이블의 모든 행을 조회하는 저장 프로시저를 생성하는 과정입니다.
예제
mysql> Delimiter //
mysql> CREATE PROCEDURE Hello()
-> SELECT * from Student_info; //
Query OK, 0 rows affected (0.08 sec)
위 실행 결과에서 확인할 수 있듯이, MySQL은 BEGIN과 END 없이도 정상적으로 저장 프로시저를 생성했습니다. 이제 CALL 문을 사용하여 해당 프로시저를 호출해 보겠습니다.
mysql> Delimiter ;
mysql> CALL Hello();
+-----+---------+------------+------------+
| id | Name | Address | Subject |
+-----+---------+------------+------------+
| 101 | YashPal | Amritsar | History |
| 105 | Gaurav | Chandigarh | Literature |
| 125 | Raman | Shimla | Computers |
+------+---------+------------+------------+
3 rows in set (0.18 sec)
Query OK, 0 rows affected (0.28 sec)
핵심 정리
- 'BEGIN'과 'END'는 여러 개의 SQL 문을 하나의 블록으로 묶을 때 필요합니다.
- 프로시저 본문이 SELECT 문처럼 단일 문장이라면 BEGIN과 END를 생략할 수 있습니다.
- 프로시저 생성 후에는 반드시
DELIMITER ;명령으로 구분자를 원래 상태로 되돌려야 합니다. - 생성된 프로시저는 CALL 문으로 간편하게 호출할 수 있습니다.