처음으로 만들 Helloworld 는 함수였습니다.
함수와 프로시져를 서로 만드는 법이 틀리죠. 하지만 구조가 많이 비슷합니다.
Functions
함수는 항상 리턴 값이 존재합니다. 그리고 꼭 하나의 값만 리턴합니다.
MySQL에서 자주 사용하는 CONCAT 라는 함수를 보겠습니다.
mysql> select concat(emp_name,' ',dept_id) from emps;
+------------------------------+
| concat(emp_name,' ',dept_id) |
+------------------------------+
| Roger 1 |
| John 2 |
| Alan 1 |
+------------------------------+
3 rows in set (0.00 sec)
위와 같이 두개의 글자를 합해서 하나의 글자로 리턴하는 CONCAT 함수를 보았습니다.
MySQL에서 제공하는 스트링 함수이지만 이제부터는 개발자가 직접 함수를 만들어 사용할수 있습니다.
함수는 꼭 Select 명령을 통해서만 결과를 볼수 있습니다.
Procedures
프로시져는 함수보다 작은 기능을 가지고 있습니다.
함수와 거의 같지만 리턴 값만 없다고 보시면 됩니다.
간단한 함수를 하나 만들어보겠습니다.
--------------------------------
create procedure helloprocedure()
select 'Hello Procedure' ;
---------------------------------
위에 Procedure를 실행시킬때는 call 이라는 명령어를 통해 실행시킵니다.
mysql> call helloprocedure();
+-----------------+
| Hello Procedure |
+-----------------+
| Hello Procedure |
+-----------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
이제 기존이 프로시져를 삭제하고 다시 생성해보겠습니다.
아래의 코드는 helloprocedure 라는 프로시져를 만들고
begin .. end 을 통해 작성하였습니다.
-------------------------------------------------
delimiter //
drop procedure if exists helloprocedure
//
create procedure helloprocedure()
begin
select 'Hello Procedure 2' ;
end
//
-------------------------------------------------
mysql> call helloprocedure() //
+-------------------+
| Hello Procedure 2 |
+-------------------+
| Hello Procedure 2 |
+-------------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
이제 여러분 간단하게 프로시져와 함수를 만들고 실행시키는 법에 대해서
간단하게 이해 하셨을거라 생각합니다.
http://mysql.gilfster.com/page.php?parent_id=1.1&page_id=1.1.4
SQLGate Development Team
http://www.antwiz.com
Blog : http://isql.blogspot.com/
|