본문 바로가기
DataBase/MySQL

[본문스크랩] Mysql Function 과 Procedure

by 백룡화검 2010. 4. 24.

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