본문 바로가기
프로그래밍/MySQL

[Stored Procedure] 2. MySQL Stored Procedure 시작하기

by 듀빈 2016. 7. 22.
반응형


요약 : 이번 강좌에서는, CREATE PROCEDURE 문법을 이용해서 첫번째 MySQL Stored Procedure를 어떻게 개발하는지 보여 줄 것이다. 덧붙여서 우리는 SQL문으로 저장 프로시저를 호출하는 방법을 보여줄 것이다.

첫번째 MySQL Stored Procedure 작성하기

  우리는 구문(syntax)에 친숙해질 수 있도록 이름이 GetAllProducts()인 간단한 저장 프로시저를 개발할 것이다. GetAllProducts() 저장 프로시저는 products 테이블에 있는 모든 products을 선택하는 것이다.

mysql 클라이언트 툴을 실행시키고 다음 명령어를 입력해라:

1
2
3
4
5
6
DELIMITER //
 CREATE PROCEDURE GetAllProducts()
   BEGIN
   SELECT * FROM products;
   END //
DELIMITER ;
cs

명령어들을 세부적으로 확인해보자:

  • 첫번째 명령어는 DELIMITER ( // ) 입니다. 이것은 저장 프로시저 구문과는 관련이 없다. DELIMITER문은 표준 구분 기호인 세미콜론( ; ) ??. 이 경우에 구분 기호는 세미콜론 ( ; ) 에서 더블 슬래시 ( // ) 로 변경되어진다. 왜 구분기호를 변경할 까? 왜냐하면 우리는 MySQL 도구가 매번 각 문장을 실행하는 것 보다 서버에 저장 프로시저를 통과 시키는 것을 원하기 때문이다.  END 키워드는 우리가 저장 프로시저의 끝을 표시할 때 구분기호 ( // ) 를 사용한다. 마지막 명령어 ( DELIMITER ; )는 구분기호를 다시 세미콜론 ( ; )으로 변경하기 위해 사용한다.
  • 우리는 새로운 저장 프로시저를 작성할때 CREATE PROCEDURE 문을 사용한다. 우리는 CREATE PROCEDURE 문 뒤에 저장 프로시저의 이름을 명시한다. 위 예시의 경우에, 저장 프로시저의 이름은 GetAllProducts 이다. 우리는 저장 프로시저의 이름 뒤에 괄호를 놓는다.
  • BEGIN 과 END 사이의 부분에 저장 프로시저의 바디 부분을 호출한다. 너는 비즈니스 로직을 처리하기 위해 바디 부분에 서술한 SQL 문을 작성할 수 있다. 위의 예제 저장 프로시저의 경우에, 우리는 products table 에서 data를 질의 하기 위해 간단한 SELECT 문법을 사용한다.

MySQL 클라이언트 툴로 저장 프로시저를 작성하는 것은 매우 지루(tedious)하며, 특히 저장프로시저 일때는 복잡하다. MySQL을 위한 대부분의 GUI 도구는 직관적인 형태로 새로운 저장 프로시저를 만들 수 있도록 허용한다.

MySQL Workbench를 예시로 들면 아래 와 같이 따라하면, 새로운 저장 프로시저를 생성할 수 있다:

첫번째, Rountines 을 마우스 오른쪽 버튼을 클릭한후 아이템 중 Create Procedure... 를 선택한다 (역 : 역자가 사용하는 MySQL Workbench 6.3에서는 Stored Procedure 가 따로 존재하므로 Stored Procedure 메뉴에서 Create Procedure 를 선택했다.)

다음, 저장 프로시저 코드를 작성하고 적용 버튼을 클릭한다(역 : 원문에서는 DELIMITER를 사용하였지만 6.3 에서는 자동으로 적용 되는 것으로 보이므로 생략했습니다.)

그 후, MySQL 은 데이터 베이스에 저장하기 전에 코드를 검토 할 수 있다. 만약 코드가 완벽하다면 Apply 버튼을 클릭한다.

그 후, MySQL 은 데이터 베이스 카탈로그에 저장프로시저를 컴파일하고 저장한다; Finish 버튼을 클릭한다.

마지막으로, classicmodels 데이터베이스의 Routines 아래에 새로운 저장 프로시저가 생성된 것을 볼 수 있다.

우리는 새로운 저장 프로시저를 만들었으니, 이제 이 프로시저를 어떻게 사용하는지 배워보자!

저장 프로시저 호출하기

저장 프로시저를 호출하기 위해, 아래와 같은 SQL 명령문을 사용해야 한다.

1
CALL STORED_PROCEDURE_NAME();
cs

저장 프로시저를 호출하기 위해 CALL 문을 사용할 수 있다. 예시에서 GetAllProducts() 저장 프로시저를 호출하기 위해 아래와 같은 코드를 사용할 수 있다.

1
CALL GetAllProducts();
cs

만약, 위의 명령문을 실행한다면, products 테이블의 모든 prodcuts 들을 볼 수 있을 것이다.

이번 강좌에서는 CREATE PROCEDURE 문을 사용하여 간단한 저장 프로시저를 작성하는 방법을 배웠고, CALL 문을 사용한 SQL 명령어로 이것을 호출하는 방법을 배웠다.



출처 : http://www.mysqltutorial.org/getting-started-with-mysql-stored-procedures.aspx

이전 강좌 : [Stored Procedure] 1. MySQL Stored Procedure 를 소개합니다.

다음 강좌 : [Stored Procedure] 3. MySQL Stored Procedure 변수

반응형