Exploring Scalar-Valued Functions in SQL Server: A Detailed Guide
☰Fullscreen
Table of Content:
Scalar functions may or may not have parameters, but always return a single (scalar) value. The returned value can be of any data type, except text, ntext, image, cursor, and timestamp.
To create a function, we use the following syntax:
Syntax:
CREATE FUNCTION Function_Name(@Parameter1 DataType, @Parameter2 DataType,..@Parametern Datatype) RETURNS Return_Datatype AS BEGIN Function Body Return Return_Datatype END
Code: Use this below code to create a function
/* Scalar Valued Function 1 */ CREATE FUNCTION CubeFunction(@X INT) RETURNS INT AS BEGIN RETURN @X * @X *@X END -- Execute SELECT dbo.CubeFunction(5) AS Cube
Code: Example of Scalar Valued function
/* Scalar Valued Function 2 */ CREATE FUNCTION Addition(@Num1 Decimal(7,2), @Num2 Decimal(7,2)) RETURNS Decimal(7,2) Begin DECLARE @Result Decimal(7,2) SET @Result = @Num1 + @Num2 RETURN @Result end -- Execute print dbo.Addition(12,13)
Code: Example of Scalar Valued function
/* Scalar Valued Function 3 */ CREATE FUNCTION CalculateAge ( @DOB DATE ) RETURNS INT AS BEGIN DECLARE @AGE INT SET @AGE = DATEDIFF(YEAR, @DOB, GETDATE())- CASE WHEN (MONTH(@DOB) > MONTH(GETDATE())) OR (MONTH(@DOB) = MONTH(GETDATE()) AND DAY(@DOB) > DAY(GETDATE())) THEN 1 ELSE 0 END RETURN @AGE END -- Execute SELECT dbo.CalculateAge('12-02-1996') as age -- Use the above function in a Query SELECT Emp_ID, Emp_Name, Emp_DOB, dbo.CalculateAge(Emp_DOB) AS Age FROM Emp_Master
Code: Example of Scalar Valued function
/* Drop Function */ DROP FUNCTION FuncationName
A stored procedure also can accept DateOfBirth and return Age, but you cannot use stored procedures in a select or where clause. This is just one difference between a function and a stored procedure. There are several other differences, which we will talk about in a later session.