본문 바로가기
DataBase/MySQL

Mysql Function 과 Procedure

by 백룡화검 2008. 6. 27.

출처 하루에도 열두번씩 | 챨스
원문 http://blog.naver.com/khm8843/20027634540

처음으로 만들 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/