데이터베이스
[DB] Mysql 함수 정의 및 사용
KyooDong
2020. 12. 6. 16:54
728x90
Function(함수)
프로시져와 비슷하지만 함수의 경우 특별한 데이터 타입으로 특별한 연산을 할 때 더 용이함 예) 지도타입에서 지도 상의 두 영역이 겹치는지 판단하는 연산…!
Scalar Function
리턴 값이 scalar 인 함수
학과 내의 교수의 수를 알아내는 함수
CREATE FUNCTION profCount(deptName varchar(20)) RETURNS INTEGER
BEGIN
DECLARE pCount INTEGER;
SELECT COUNT(*) INTO pCount FROM professor
WHERE professor.deptName = profCount.deptName;
return pCount;
END;
위와 같이 파라미터에 접근할 때 {함수이름.파라미터} 의 형태로 사용하는 것만 주의하면 된다.
Table Function
리턴 타입이 테이블인 함수
CREATE FUNCTION myProfessorOf(deptName varchar(20)) RETURNS TABLE
(
pID varchar(5),
name varchar(20),
deptName varchar(20),
salary nueric(6, 2)
)
RETURN TABLE
(
SELECT pID, name, deptName, salary FROM professor
WHERE professor.deptName = myProfessorOf.deptName
);
RETURNS TABLE 은 리턴할 테이블이 어떻게 생겼는지 정의,
RETURN TABLE 은 리턴할 테이블을 조회할 쿼리문을 정의
SELECT * FROM table(myProfessorOf(‘CS’));
함수로 만들어진 테이블은 그 결과가 테이블임을 알리기 위해 table 키워드에 감싸서 사용해야함