Advanced data base

Published on December 2016 | Categories: Documents | Downloads: 54 | Comments: 0 | Views: 186
of 15
Download PDF   Embed   Report

Advanced data base

Comments

Content

Advanced topics
in SQL Server

User-defined
functions

User-defined functions
• Purpose: Encapsulate processing logic prescribed by the user;

specify a set of instructions used to process table data and other
queryable objects or variables in order to return a result in form of
a table or a scalar value.

• Represent stand-alone objects that can be reused (called)
inside definitions of other SQL Server objects by specifying
function name and input parameters, if applicable.
• May be called inside views, stored procedures and other
functions, which helps reducing code volume and leads to
better structured code.
• Recommended when a certain block of SQL code must be
used by multiple queries /views / procedures / functions.
• May be used to produce virtual tables that can be queried
similarly to database tables.

Types of user-defined functions
• Scalar-valued functions
o Return a single value represented by a scalar data type,
either built-in or user-defined

• Table-valued functions
o Return a set of records which emulate a virtual table
o Depending on function definition:
• Inline functions: return a table as a result of a single SQL
statement without requiring explicit definition of that
table;
• Multi-statement functions: require explicit definition of
the resulting table.

Scalar-valued functions
• Return a single value
• Accept multiple parameters
• Consist of 2 parts:
o Function header – Specifies function name, parameter list
and the data type of the result;
o Function body – Defines the internal logic responsible for
producing the result; it ends with the RETURN command
which provides the value or the expression representing
the result.

• May be called inside SQL statements in clauses
such as SELECT, WHERE , GROUP BY, HAVING or
ORDER BY.

Scalar-valued functions
• Creation:
• CREATE FUNCTION function_name ([@parameter_1 AS data_type],
. . . [@parameter_n AS data_type])
RETURNS data_type
AS
BEGIN
SQL commands
RETURN value/expression_to_return
END

• Alteration:


ALTER FUNCTION ...

• Removal:
• DROP FUNCTION ...

Scalar-valued functions - Example

Table-valued user defined functions
A. INLINE functions
• return a table, without explicitly defining its structure
• a single SELECT statement is the only accepted
contents
• BEGIN ….END structures are not allowed
• each field in the source query must have an explicit
name
• the columns returned by the function are provided by
the SELECT statement on which it relies
• The ORDER BY clause is only allowed when
accompanied by TOP

Table-valued user defined functions
A. INLINE functions – The syntax:
CREATE FUNCTION function_name ( [@parameter_1 AS data_type], …
[@parameter_n AS data_type] )
RETURNS TABLE
AS
RETURN (SQL_SELECT_Statement)

INLINE functions - Example

Table-valued functions
B. MULTI-STATEMENT functions:
• return a table as a result
• may encapsulate complex processing logic
• the structure of the resulting table must be explicitly
defined

Table-valued functions
B. MULTI-STATEMENT functions – The syntax:
CREATE FUNCTION function_name ([@parameter_1 AS date_type],
. . . [@parameter_n AS data_type])

RETURNS @result_variable TABLE (field_1 data_type,
. . . field_N data_type)

AS
BEGIN
SQL statements / commands

RETURN
END

Table-valued functions - Example

Table variables
• Allocate memory space to store record sets defined
as virtual tables.
• Allow temporary storage of data organized in
multiple predefined fields so that it can be used for
various processing operations.
• Enable efficient data processing if subjected to
relational algebra operators.
• May by subjected to SELECT queries & support JOIN
operator relative to other tables.
• May be used in INSERT, UPDATE or DELETE statements.

Table variables
Declare @TABLE_VARIABLE_NAME TABLE
(
Field_Name1 Data_Type_1,
Field_Name2 Data_Type_2,

Field_NameN Data_Type_N,
)

Insert into @TABLE_VARIABLE_NAME
(Field_Name1, Field_Name2, …)
Values (Value1, Value2, …)
---------------------------------------------------------------------------Select *
From @TABLE_VARIABLE_NAME
Where …

Table variables – Example

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close