반응형
MSSQL 함수도 기본적인 IF, WHILE 지원은 하지만 inline table-valued function에서는 지하지 않습니다.
MSSQL 함수 IF, WHILE 설명.
- MSSQL 함수에서 제어문을 사용 가능한지 문의가 있는데, 결론은 사용할 수 있습니다.
- 단, Inline table-valued function을 사용할 때는 불가능합니다.
- 물론 declear 변수 선언도 사용할 수 없습니다.
- 스칼라 함수하고 다중문장 테이블 반환 함수를 사용하면 가능합니다.
MSSQL 함수 IF, WHILE 문 사용법 및 예제.
IF, WHILE 사용 예제.
- IF, WHILE 사용할 수 있는 코드와 에러 코드입니다.
스칼라 함수 IF, WHILE 문 사용법.
- 스칼라 함수 소스코드입니다.
CREATE FUNCTION AurumGuide_ControlFunc1 (
@PARAM1 int
)
RETURNS int
AS
BEGIN
declare @AurumNum int,
@returnStr int;
SET @returnStr = 0;
SET @AurumNum = 1;
WHILE @AurumNum < 15
BEGIN
IF(@AurumNum < 10)
BEGIN
set @returnStr += @PARAM1;
END
ELSE
BEGIN
set @returnStr += -1;
END
SET @AurumNum = @AurumNum + 1;
END;
RETURN @returnStr
END;
-- EXCUTE
SELECT DBO.AurumGuide_ControlFunc1(2);
인라인 테이블 반환 함수 IF, WHILE 문 사용법.
- 인라인 테이블 반환 함수 소스코드 입니다.
CREATE FUNCTION DBO.fn_AurumGuide_ControlFunc2
(
@AurumId INT
)
RETURNS TABLE
as
RETURN
(
WHILE @AurumId < 4
BEGIN
-- INSERT @Return_AurumGuide
SELECT @AurumId ;
SET @AurumId = @AurumId + 1;
END;
);
다중문장 테이블 반환 함수 IF, WHILE 문 사용법.
- 다중문장 테이블 반환 함수 소스코드 입니다.
CREATE FUNCTION DBO.fn_AurumGuide_ControlFunc3 (@AurumId int)
RETURNS @Return_AurumGuide TABLE
(
AurumId int,
AurumNm varchar(255) NULL
) AS
BEGIN
DECLARE @NUM INT;
SET @NUM = 1
WHILE @NUM < 4
BEGIN
IF(@AurumId = '')
BEGIN
INSERT @Return_AurumGuide
SELECT AurumId,AurumNm
FROM AurumGuide_ControlFunc af;
END
ELSE
BEGIN
INSERT @Return_AurumGuide
SELECT AurumId,AurumNm
FROM AurumGuide_ControlFunc af
WHERE af.AurumId = @AurumId ;
END;
SET @NUM += 1;
END;
RETURN;
END;
-- EXCUTE
SELECT * FROM DBO.fn_AurumGuide_ControlFunc3(3);
인라인 테이블 반환 함수 언제 사용하지?
- RETURN 절 안에는 단순 SELECT 절만 올 수 있다고 생각하면 이해하기 쉽습니다.
- 일반적으로 반환되는 column 고정되어 있지만 Inline table-valued function 고정하지 않고 데이터를 반환할 수 있습니다.
반응형