Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

간단한 MySQL 함수를 만드는 방법은 무엇입니까?

<시간/>

함수 생성 명령을 사용하여 함수를 생성할 수 있습니다. 구문은 다음과 같습니다 -

delimiter //
DROP FUNCTION if exists yourFunctionName;
CREATE FUNCTION yourFunctionName(Parameter1,...N) returns type
BEGIN
# declaring variables;
# MySQL statementns
END //
delimiter ;

먼저 여기에서 테이블을 만들고 테이블에 몇 가지 레코드를 추가합니다. 그 후 간단한 함수가 생성됩니다. 다음은 테이블을 생성하는 쿼리입니다 -

mysql> create table ViewDemo
   −> (
   −> Id int,
   −> Name varchar(200),
   −> Age int
   −> );
Query OK, 0 rows affected (0.58 sec)

insert 명령을 사용하여 테이블에 레코드를 삽입합니다. 쿼리는 다음과 같습니다 -

mysql> insert into ViewDemo values(1,'John',23);
Query OK, 1 row affected (0.15 sec)

mysql> insert into ViewDemo values(2,'Sam',24);
Query OK, 1 row affected (0.15 sec)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -

mysql> select *from ViewDemo;

다음은 출력입니다 -

+------+------+------+
| Id   | Name | Age  |
+------+------+------+
|    1 | John | 23   |
|    2 | Sam  | 24   |
+------+------+------+
2 rows in set (0.00 sec)

이제 정수 매개변수를 사용하고 문자열을 반환하는 함수를 만들 것입니다. 이 함수의 목적은 주어진 id로 레코드를 검색하는 것입니다. 주어진 id가 테이블 id와 일치하면 이름을 반환하고 그렇지 않으면 찾을 수 없음과 같은 오류 메시지를 표시합니다.

기능은 다음과 같습니다 -

mysql> SET GLOBAL log_bin_trust_function_creators = 1;
Query OK, 0 rows affected (0.00 sec)
mysql> drop function if exists searchRecord;
   ->
   -> create function searchRecord(yourId int) returns char(100)
   -> begin
   -> declare Name1 char(100) default "No Name Found For This Id";
   -> select Name into Name1 from ViewDemo where Id =yourId;
   -> return Name1;
   -> end //
Query OK, 0 rows affected (0.21 sec)
Query OK, 0 rows affected (0.33 sec)
mysql> delimiter ;

이제 주어진 id로 함수가 작동하는지 확인하십시오.

사례 1 − 주어진 id가 존재할 때.

쿼리는 다음과 같습니다 -

mysql> select searchRecord(2) as Found;

다음은 출력입니다 -

+-------+
| Found |
+-------+
| Sam   |
+-------+
1 row in set (0.00 sec)

사례 2 - 주어진 id가 없을 때.

쿼리는 다음과 같습니다 -

mysql> select searchRecord(100) as Found;

다음은 레코드가 없음을 표시하는 출력입니다. −

+---------------------------+
| Found                     |
+---------------------------+
| No Name Found For This Id |
+---------------------------+
1 row in set (0.00 sec)