함수(3)

Hyuntae Jung·2022년 7월 29일
0

MS SQL

목록 보기
40/41
post-thumbnail

사용자 정의 스칼라 함수, SCHEMABINDING 옵션 설정하기

1. 사용자 정의 함수의 제약사항

  • TRY /CATCH 문을 사용할 수 없다.
  • 따라서, 오류가 발생하면 실행이 멈추고, 반환값이 없다.
  • 사용자 정의 함수에서는 CREATE/ ALTER/ DROP 문을 사용할 수 없다.
CREATE FUNCTION ufn_raise_sal(@empNo INT)
 RETURNS INT
 WITH SCHEMABINDING
AS
	BEGIN
		DECLARE @year INT;
		DECLARE @sal INT;

		-- 근속 년수
		SELECT @year = YEAR(GETDATE()) - YEAR(hireDate),  @sal = salary 
		  FROM dbo.employee
		WHERE empNo = @empNo;
		
		DECLARE @raisedSal INT;
		
		SET @raisedSal =
		CASE
			WHEN( @year >=10 ) THEN @sal +(@sal*0.1)
			WHEN( @year <10 AND @year >=5 ) THEN @sal +(@sal*0.05)
			WHEN( @year < 5 ) THEN @sal +(@sal*0.03)
			  ELSE @sal
		END		
		
		RETURN @raisedSal
			
	END
	SELECT empNo, empName, dbo.ufn_raise_sal(empNo) AS "인상 급여"
	  FROM employee;

SELECT로 함수를 호출할 때 dbo.을 꼭 입력해야 한다.

2. 스키마 바운드 함수

: 참조하는 테이블이나 뷰등을 수정하지 못하게 하는 함수

EXEC SP_RENAME 'employee.salary', 'sal','column';

WITH SCHEMABINDING을 사용하여 salary가 변경되지 않는 것을 볼 수 있다.

3. 테이블 변수 사용

DECLARE @변수명 TABLE(필드명 형식, ....)

강의: ms sql 2014 제대로 배우기 2

0개의 댓글