Return문에 의해서 특정 값을 돌려주는 기능을 함.
예)
CREATE FUNCTION UFN_GETAGE(@BYEAR INT)
RETURNS INT
AS
BEGIN
DECLARE @AGE INT
SET @AGE = YEAR(GETDATE()) -@BYEAR
RETURN @AGE
END
호출시(스키마 이름을 지정하지 않으면 dbo를 붙여줘야된다.)
SELECT DBO.UFN_GETAGE(2000)
EXECUTE를 이용한 호출
DECLARE @RETVAL INT;
EXEC @RETVAL = DBO.UFN_GETAGE 2000;
PRINT @RETVAL
주로 테이블을 조회할 때 사용.
SELECT DBO.UFN_GETAGE(SUBSTRING(USER_BIRTHDATE, 0, 5))
FROM DIT_USER_TBL
인라인 테이블 반환 함수.
뷰와 거의 동일한 목적으로 사용될 수 있다.
CREATE FUNCTION 함수이름(매개변수)
RETURNS TABLE
AS
BEGIN
RETURN(단일 select 문장 )
END
예)
CREATE FUNCTION UFN_GETYEAR(@YEAR INT)
RETURNS TABLE
AS
RETURN(
SELECT *
FROM DIT_USER_TBL
WHERE SUBSTRING(USER_BIRTHDATE, 0, 5) > @YEAR
)
select * from dbo.UFN_GETYEAR(1980)
다중 문 테이블 반환 함수.
CREATE FUNCTION 함수이름(매개변수)
RETURNS @테이블 변수 TABLE
(열이름과 데이터 형식 정의...)
AS
BEGIN
위(헤더)에서 정의한 테이블에 행을 INSERT시키는 작업들...
RETURN
END
CREATE FUNCTION UFN_GETYEAR2(@YEAR INT)
RETURNS @RETTABLE TABLE(USERID CHAR(12), NAME NCHAR(10), GRADE NCHAR(5))
AS
BEGIN
DECLARE @ROWCNT INT;
SELECT @ROWCNT = COUNT(*) FROM DIT_USER_TBL WHERE SUBSTRING(USER_BIRTHDATE, 0, 5) > @YEAR
IF @ROWCNT <=0
BEGIN
INSERT INTO @RETTABLE VALUES('없음', '없음', '없음');
RETURN;
END
INSERT INTO @RETTABLE
SELECT USER_NO, USER_NM,SUBSTRING(USER_BIRTHDATE, 0, 5)
FROM DIT_USER_TBL
WHERE SUBSTRING(USER_BIRTHDATE, 0, 5) > @YEAR
RETURN;
END
댓글