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.
을 꼭 입력해야 한다.
: 참조하는 테이블이나 뷰등을 수정하지 못하게 하는 함수
EXEC SP_RENAME 'employee.salary', 'sal','column';
WITH SCHEMABINDING
을 사용하여salary
가 변경되지 않는 것을 볼 수 있다.
DECLARE @변수명 TABLE(필드명 형식, ....)
강의: ms sql 2014 제대로 배우기 2