SQL Server Functions :
Functions in SQL Server is a set of SQL statements that
accepts only input parameters at run time and perform some actions and return the
result, which can be only single value or a table.
Types of Functions:
System Defined
Function: 
These functions are defined by SQL Server so these are Pre-defined functions. Like: 
AVG()
COUNT()
Sum()
ABS()  
Round() 
Convert() 
To use system defined function we have to pass parameters
information only to get output from these functions.
User Defined
Functions: 
These Functions are created by Users in database for
performing some operations on data.
Types of User Defined Functions are:
Scalar Function:
User defined scalar function also returns single value as a
result of actions perform by function. We return any datatype value from
function.
Example:
--Create
function to get employee full name 
Create function UFD_GetEmpFullName
(
 @FirstName varchar(50),
 @LastName varchar(50)
)
returns varchar(101)
As
Begin return (Select @FirstName + ' '+ @LastName);
end
--Calling
the above created function
Select dbo.UFD_GetEmpFullName(FirstName,LastName) as Name, Salary from dbo.Employee
Inline Table-Valued
Function:
User defined inline table-valued function returns a table
variable as a result of actions perform by function. The value of table
variable should be derived from a single SELECT statement.
Example:
--Create
function to get employees
Create function UFD_GetEmpDetails()
returns Table
As
 return (Select * from dbo.Employee)
 --Call the above created function
Select * from UFD_GetEmpDetails()
Multi-Statement
Table-Value Function:
User defined multi-statement table-valued function returns
a table variable as a result of actions perform by function. In this a table
variable must be explicitly declared and defined whose value can be derived
from a multiple SQL statements.
Example:
--Create
function for EmpID,FirstName and Salary of Employee
Create function UFD_GetMulEmployee()
returns @Employee Table
(
EmpID
int, 
FirstName
varchar(50),
Salary
int
)
As
begin
 Insert into @Employee Select e.EmpID,e.FirstName,e.Salary from dbo.Employee e;
--Now
update salary of first employee
 update @Employee set Salary=25000 where EmpID=1;
--It
will update only in @Emp table not in Original Employee table
return
end 
 --Call the above created function
Select * from UFD_GetMulEmployee()