데이터베이스

[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 키워드에 감싸서 사용해야함