What is an SQL Server function?
A T-SQL function in SQL Server database represents an user-defined object that contains one or more SQL statements to perform a specific operations.
A SQL Server function accepts input parameters, perform operations, and returns the result of that operation as a value.
A SQL Server user-defined function can be easily integrated while developing various applications or designing a database.
It has many applications and helps programmers solve complex problems.
What is the purpose of a SQL Server function?
A SQL Server user-defined function(Transact-SQL function) is useful when you want to keep one or more sql statements in the same block, this way the function can be reused.
Types of functions
Scalar functions
. User-defined scalar functions return a single data value.
The return type can be any data type(most used: numeric, date & time, string) except text, ntext, image, cursor, and timestamp.
Table-valued functions
. User-defined table-valued functions return a table data type.
How to create a function with T-SQL?
To create a function in SQL Server with T-SQL uses the following syntax:
CREATE OR ALTER FUNCTION function_name(parameters)
RETURNS data_type AS
BEGIN
SQL_statements
RETURN return_value
END
GO
The function_name is the name of the function in the above syntax.
The input parameters are given in the round brackets. It also has the data types.
Data_type is the data type of the value the function will return.
SQL_statements is the select statement defined by user.
Return_value is the value that the function will return.
Create Function return single value
The example below shows how to create a function in the SQL Server database using the T-SQL language.
The created function is of scalar type, the CREATE FUNCTION
keyword is used, the function contains an int
type parameter and returns a single value, the returned type is money.
CREATE FUNCTION CtrAmount ( @Ctr_Id int(10) )
RETURNS MONEY
AS
BEGIN
DECLARE @CtrPrice MONEY
SELECT @CtrPrice = SUM(amount)
FROM Contracts
WHERE contract_id = @Ctr_Id
RETURN(@CtrPrice)
END
GO
SELECT * FROM CtrAmount(345)
GO
Create Function return Table
The example below shows how to create a Table-valued function
in the SQL Server.
The CREATE FUNCTION
keyword is used, the function contains an int type parameter and returns a table
data type.
CREATE FUNCTION function_name (@PRODUCT_ID Int)
RETURNS @ProductsList Table
(Product_Id Int,
Product_Dsp nvarchar(150),
Product_Price Money )
AS
BEGIN
IF @PRODUCT_ID IS NULL
BEGIN
INSERT INTO @ProductsList (Product_Id, Product_Dsp, Product_Price)
SELECT Product_Id, Product_Dsp, Product_Price
FROM Products
END
ELSE
BEGIN
INSERT INTO @ProductsList (Product_Id, Product_Dsp, Product_Price)
SELECT Product_Id, Product_Dsp, Product_Price
FROM Products
WHERE Product_Id = @PRODUCT_ID
END
RETURN
END
GO