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

테이블의 동적 데이터를 사용하는 MySQL 저장 함수를 어떻게 만들 수 있습니까?

<시간/>

MySQL 저장 함수는 테이블을 참조할 수 있지만 결과 집합을 반환하는 문은 사용할 수 없습니다. 따라서 결과 집합을 반환하는 SELECT 쿼리가 없다고 말할 수 있습니다. 그러나 우리는 그것을 없애기 위해 SELECT INTO를 가질 수 있습니다. 예를 들어, 다음 레코드가 있는 'Student_marks'라는 테이블의 동적 데이터를 사용하여 점수의 평균을 계산하는 'Avg_marks' 함수를 만들고 있습니다.

mysql> Select * from Student_marks;
+-------+------+---------+---------+---------+
| Name  | Math | English | Science | History |
+-------+------+---------+---------+---------+
| Raman |   95 |      89 |      85 |      81 |
| Rahul |   90 |      87 |      86 |      81 |
+-------+------+---------+---------+---------+
2 rows in set (0.00 sec)

mysql> DELIMITER //
mysql> Create Function Avg_marks(S_name Varchar(50))
    -> RETURNS INT
    -> DETERMINISTIC
    -> BEGIN
    -> DECLARE M1,M2,M3,M4,avg INT;
    -> SELECT Math,English,Science,History INTO M1,M2,M3,M4 FROM Student_marks W
HERE Name = S_name;
    -> SET avg = (M1+M2+M3+M4)/4;
    -> RETURN avg;
    -> END //
Query OK, 0 rows affected (0.01 sec)

mysql> DELIMITER ;
mysql> Select Avg_marks('Raman') AS 'Raman_Marks';
+-------------+
| Raman_Marks |
+-------------+
|          88 |
+-------------+
1 row in set (0.07 sec)

mysql> Select Avg_marks('Rahul') AS 'Raman_Marks';
+-------------+
| Raman_Marks |
+-------------+
|          86 |
+-------------+
1 row in set (0.00 sec)