I. Scalar Functions
II. In-Line Table Functions
III. Multistatement Table Functions
Accept parameters of any scalar data type except rowversion
Scalar Functions | In-Line Table Functions | Multistatement Table Functions |
|---|---|---|
Returns only scalar value. | Return a table variable that was created by a single select statement. | Returns a table variable. No multi result set. This type of function is used when we want to apply more logic except we can express in a single query. I.e. like stored procedure we can manipulate with more statements. |
Support multiple T-SQL statements. | Supports only sing T-SQL Statement. | Support multiple T-SQL statements. |
Return type is fixed. | No need to specify the table column names and its type. | We have to specify the table columns. |
CREATE FUNCTION Testscalar(@ID INT)
RETURNS INT
AS
BEGIN
SELECT @ID = 10
SELECT @ID = @ID + 1
SELECT @ID = @ID + 1
RETURN @ID
END
|
CREATE FUNCTION [dbo].[Testinline]
(
Params
)
RETURNS TABLE AS
RETURN
SELECT *
FROM dbo.treeview
CREATE FUNCTION [dbo].[Testinline](@i INT) RETURNS TABLE AS RETURN SELECT @i AS [ColName] |
CREATE FUNCTION [dbo].[Testmultiline]
(
@ID INT
)
RETURNS @TableVariable TABLE ( I INT,
J VARCHAR(10)) AS
BEGIN
INSERT
INTO @TableVariable
SELECT 1, '10' UNION ALL
SELECT 2, '20' UNION ALL
SELECT 3, '30'
RETURN
END
|
The last statement included within a function must be a return statement RETURN statements in scalar valued functions must include an argument. Simply retrun statemet is wrong. | The last statement included within a function must be a return statement. Return @I is wrong Return @I as a is wrong | The last statement included within a function must be a return statement. return @TableVariable is wrong. |
Original Link : 15seconds
Valid
· Control-flow statements
· Assignment statements
· Variable declarations
· SELECT statements that modify local variables
· Cursor operations that fetch into local variables
· INSERT, UPDATE, DELETE statement that act upon local table variables
Invalid:
· Built-in, nondeterministic functions such as GetDate()
· Statements that update, insert, or delete tables or views
· Cursor fetch operations that return data to the client
. can’t able to execute a stored procedure.
How to Call Scalar-valued Functions
SELECT ColNames, dbo.ScalarValuedFunction(starttime,endtime) AS ColName FROM TableName
WHERE BankerID = dbo.ScalarValuedFunction('IBM')
How to Call Table-valued Functions
SELECT * FROM dbo.TableValuedFunctions('key1|key2|key3|key4|key5', '|')
-- For converting arrays to table
SELECT * FROM Department D
CROSS APPLY dbo.fn_GetAllEmployeeOfADepartment(D.DepartmentID)
SELECT * FROM Department D
OUTER APPLY dbo.fn_GetAllEmployeeOfADepartment(D.DepartmentID)
No comments:
Post a Comment