Saturday 16 May 2015

System defined and user defined Functions in SQL server

Function is a database object in Sql Server. Basically it is a set of sql statements that accepts only input parameters, perform actions and return the result. Function can return only single value or a table. We can’t use function to Insert, Update, Delete records in the database table(s).

Types of Functions:- 

There are two types of Functions in sql server. 



















1. System Defined Function:-

These functions are built in functions in Sql Server for different purpose. We have two types of system defined function in Sql Server

1.a  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.


Sl.No.
Scalar Function
Description
1
convert(int, 20.89)
This will convert the given float value to integer means 20
2
ltrim(' sql')
This will remove the spaces from left hand side of ‘sql’ string.
3
lower('SQL')
This will returns lower case of given string means 'sql'
4
upper('sql')
This will returns upper case of given string means ‘SQL’
5
round(56.27128,2)
This will round off the given number to 2 places of decimal means 56.27
6
reverse('hhhaa')
This will reverse the given string and retruns  ‘aahh’
7
datediff(day,'2015-05-10','2015-05-16')
This will returns difference of two dates in day. here return value is 6
8
Concat(‘Ram’,’pal’)
This will concat first and second values and return Rampal
9
CAST(GETDATE() as varchar)
This will cast date object as string and return
‘May 16 2015  3:57PM’


1.b 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.


SlNo.

Aggregate Function

Description
1
MAX()
This returns maximum value from a collection of values.

2
MIN()
This returns minimum value from a
3
AVG()
This returns average of all values in a collection.

4
COUNT(*)
This returns no of counts from a collection of values.


2. User Defined Function

These functions are created by user in system database or in user defined database. We three types of user defined functions.

2a. 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 Database table [EmployeeMaster]


USE [Company]
GO

CREATE TABLE [dbo].[EmployeeMaster]
 (
      [EmpID] [int] IDENTITY(1,1) NOT NULL,
      [FirstName] [nvarchar](50) NULL,
      [LastName] [nvarchar](50) NULL,
      [Salary] [nvarchar](50) NULL,
      [IsActive] [bit] NULL
 )

GO

Insert Some Records

USE [Company]
GO
/****** Object:  Table [dbo].[EmployeeMaster]Script Date: 05/16/2015 16:21:22 ******/
SET IDENTITY_INSERT [dbo].[EmployeeMaster] ON
INSERT [dbo].[EmployeeMaster] ([EmpID], [FirstName], [LastName], [Salary], [IsActive])
 VALUES (1, N'Suraj', N'Pal', N'2000', 1)
INSERT [dbo].[EmployeeMaster] ([EmpID], [FirstName], [LastName], [Salary], [IsActive])
 VALUES (2, N'Rampal', N'Singh', N'2100', 1)
INSERT [dbo].[EmployeeMaster] ([EmpID], [FirstName], [LastName], [Salary], [IsActive])
 VALUES (3, N'Jagram', N'saini', N'4000', 1)
INSERT [dbo].[EmployeeMaster] ([EmpID], [FirstName], [LastName], [Salary], [IsActive])
 VALUES (4, N'Neetu', N'Singh', N'3000', 1)

SET IDENTITY_INSERT [dbo].[EmployeeMaster] OFF

Now Recors in table are:-






















Now Create a function in database using code below:-


Create function fnGetFullName
(
 @FirstName varchar(50),
 @LastName varchar(50)
)
returns varchar(101)
As
Begin return (Select @FirstName + ' '+ @LastName);

end


And Now call above function in select query it will concat first and last name and return full name as result.
















2.b 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 a Inline function:-

Create function fnGetEmpTable()
returns Table
As
 return (Select * from dbo.EmployeeMaster)

Now call the above function in Select query it will return table :-

















2.c  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.

Now create a multi statement function:-


Create function fnGetMultiStateMnt_Employee()
returns @Emp Table
(
EmpID int,
FirstName varchar(50),
Salary int
)
As
begin
 Insert into @Emp Select e.EmpID,e.FirstName,e.Salary from Employee e;
--Now update salary of first employee
 update @Emp set Salary=23000 where EmpID=1;
--It will update only in @Emp table not in Original Employee table
return

end

And now call the above multi statement function:-















In the above article I try to explain system defined as well as user defined functions in SQl. I hope its useful to you. Please post your feedback, question, or comments about this article.

No comments:

Post a Comment