본문 바로가기
DataBase/MsSql

MSSQL 함수 IF, WHILE 문 사용법

by 아우럼 2024. 6. 3.
반응형

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 사용 예제 입니다.
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 고정하지 않고 데이터를 반환할 수 있습니다.
반응형