Types of Function
-
System Defined Function
These functions are defined by Sql Server for different purpose. We have two types of system defined function in Sql Server
-
Scalar Function
Scalar functions operates on a single value and returns a single value. Below is the list of some useful Sql Server Scalar functions.
abs(-10.67)-
This returns absolute number of the given number means 10.67.rand(10)-This will generate random number of 10 characters.round(17.56719,3)-This will round off the given number to 3 places of decimal means 17.567upper(‘dotnet’)-This will returns upper case of given string means ‘DOTNET’lower(‘DOTNET’)-This will returns lower case of given string means ‘dotnet’ltrim(‘ dotnet’)-This will remove the spaces from left hand side of ‘dotnet’ string.convert(int, 15.56)-This will convert the given float value to integer means 15. -
Aggregate Function
Aggregate functions operates on a collection of values and returns a single value. Below is the list of some useful Sql Server Aggregate functions.
max()-
This returns maximum value from a collection of values.min()-This returns minimum value from a collection of values.avg()-This returns average of all values in a collection.count()-This returns no of counts from a collection of values.
-
-
User Defined Function
These functions are created by user in system database or in user defined database. We three types of user defined functions.
-
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.
- –Create a table
- CREATE TABLE Employee
- (
- EmpID int PRIMARY KEY,
- FirstName varchar(50) NULL,
- LastName varchar(50) NULL,
- Salary int NULL,
- Address varchar(100) NULL,
- )
- –Insert Data
- Insert into Employee(EmpID,FirstName,LastName,Salary,Address) Values(1,’Mohan’,’Chauahn’,22000,’Delhi’);
- Insert into Employee(EmpID,FirstName,LastName,Salary,Address) Values(2,’Asif’,’Khan’,15000,’Delhi’);
- Insert into Employee(EmpID,FirstName,LastName,Salary,Address) Values(3,’Bhuvnesh’,’Shakya’,19000,’Noida’);
- Insert into Employee(EmpID,FirstName,LastName,Salary,Address) Values(4,’Deepak’,’Kumar’,19000,’Noida’);
- –See created table
- Select * from Employee
- –Create function to get emp full name
- Create function fnGetEmpFullName
- (
- @FirstName varchar(50),
- @LastName varchar(50)
- )
- returns varchar(101)
- As
- Begin return (Select @FirstName + ‘ ‘+ @LastName);
- end
- –Calling the above created function
- Select dbo.fnGetEmpFullName(FirstName,LastName) as Name, Salary from 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.
- –Create function to get employees
- Create function fnGetEmployee()
- returns Table
- As
- return (Select * from Employee)
- –Now call the above created function
- Select * from fnGetEmployee()
-
Multi-Statement Table-Valued 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.
- –Create function for EmpID,FirstName and Salary of Employee
- Create function fnGetMulEmployee()
- returns @Emp Table
- (
- EmpID int,
- FirstName varchar(50),
- Salary int
- )
- As
- begin
- Insert @Emp Select e.EmpID,e.FirstName,e.Salary from Employee e;
- –Now update salary of first employee
- update @Emp set Salary=25000 where EmpID=1;
- –It will update only in @Emp table not in Original Employee table
- return
- end
- –Now call the above created function
- Select * from fnGetMulEmployee()
- –Now see the original table. This is not affected by above function update command
- Select * from Employee
-