You are on page 1of 35

Chapter 7 Part 3

Stored Procedure, Function


and Trigger

Slide 1

Objectives
1.
2.
3.
4.

Database Programming
Stored Procedure
Function
Trigger

Slide 2

1. Database Programming

1.1 Variables
1.2 Control-of-Flow Tools

Slide 3

1.1 Variables
Declare a variable:
DECLARE@limitmoney
DECLARE@min_rangeint,@hi_rangeint

Assign a value into a variable:


SET@min_range=0,@hi_range=100
SET@limit=$10
Assign a value into a variable in SQL statement:
SELECT@price = priceFROMtitles
title_id='PC2091'

Slide 4

WHERE

1.2 Control-of-Flow Tools


1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6

Slide 5

BEGINEND
IFELSE
CASE WHEN
RETURN [n]
WHILE
PRINT

1.2.1 BEGINEND
Defines a statement block
Other Programming Languages:
C#, Java, C: { }
Pascal, Delphi: BEGIN END

Slide 6

1.2.2 IFELSE
Defines conditional and, optionally, alternate execution
when a condition is false
IFBoolean_expression
T-SQL_statement|block_of_statements
[ELSE
T-SQL_statement|block_of_statements ]

Example:
IF(SELECTytd_salesFROMtitlesWHEREtitle_id='PC1035')>5000
PRINT'Year-to-datesalesare greaterthan$5,000forPC1035.

Slide 7

1.2.3 CASE WHEN


CASE input_expression
WHEN when_expression THENresult_expression
[WHENwhen_expression THEN result_expressionn]
[ELSEelse_result_expression ]
END
Example:
SELECTCASEpayterms
WHEN'Net30'THEN'Payable30daysafterinvoice'
WHEN'Net60'THEN'Payable60daysafterinvoice'
WHEN'Oninvoice'THEN'Payableupon receiptofinvoice'
ELSE'None'
END as Payment_Terms FROMsales ORDERBYpayterms

Other Programming Language


C#, Java: Switch Case ; VB: Select Case
Slide 8

1.2.4 RETURN [n]


Exits unconditionally of Trigger, Procedure or Function and
return a value (if any).

Slide 9

1.2.5 WHILE
Repeats a statement (or block) while a specific condition is
true
WHILEBoolean_expression
SQL_statement|block_of_statements
[BREAK]SQL_statement|block_of_statements
[CONTINUE]
Example:
WHILE(SELECTAVG(royalty)FROMroysched)<25
BEGIN
UPDATEroyschedSETroyalty=royalty*1.05
IF(SELECTMAX(royalty)FROMroysched)>27 BREAK
ELSE CONTINUE
END
SELECTMAX(royalty)AS"MAXroyalty"
FROMroysched
Slide 10

1.2.6 PRINT
Display message in SQL Query Analyze (Console)
PRINT string
Other Programming Languages:
Java: System.out.print
C#, VB.NET: Console.WriteLine

Slide 11

2. Stored Procedure
2.1 What Is a Stored Procedure?
2.2 Stored Procedure vs. SQL Statement
2.3 Create, update and delete a procedure

Slide 12

2.1 What Is a Stored Procedure?


A stored procedure is a collection of T-SQL statements that
SQL Server compiles into a single execution plan.
Procedure is stored in cache area of memory when the
stored procedure is first executed so that it can be used
repeatedly. SQL Server does not have to recompile it every
time the stored procedure is run.
It can accept input parameters, return output values as
parameters, or return success or failure status messages.

Slide 13

2.2 Stored Procedure vs. SQL Statement


SQL Statement

Stored Procedure
Creating
- Check syntax
- Compile

First Time
- Check syntax
- Compile
- Execute
- Return data

First Time
- Execute
- Return data

Second Time
- Check syntax
- Compile
- Execute
- Return data

Second Time
- Execute
- Return data

Slide 14

2.3 Create, update and delete a procedure


2.3.1 Create a Procedure
2.3.2 Update a Procedure
2.3.3 Delete a Procedure

Slide 15

2.3.1 Create a Procedure


2.3.1.1
2.3.1.2
2.3.1.3
2.3.1.4

Slide 16

Syntax
Example 1 (Without parameters)
Example 2 (With parameters)
Example 3 (Using RETURN)

2.3.1.1 Syntax
CREATEPROC[EDURE]procedure_name
[@parameter_namedata_type][=default] OUTPUT][,...,n]
AS
T-SQL_statement(s)

Slide 17

2.3.1.2 Example 1 (Without parameters)


CREATE PROC Departments_Members
AS
SELECT Dep_Name, COUNT(Emp_ID) NumberOfMember
FROM Departments D, Employees E
WHERE D.Dep_ID = E.Dep_ID
GROUP BY Dep_Name

Run Procedure
Execute Departments_Members

Slide 18

2.3.1.3 Example 2 (With parameters)


CREATE PROC Department_Members @DeptName varchar(50)
AS
SELECT Dep_Name, COUNT(Emp_ID) NumberOfMember
FROM Departments D, Employees E
WHERE D.Dep_ID = E.Dep_ID and Dep_Name = @DeptName
GROUP BY Dep_Name

Run Procedure
Execute Department_Members Accounting

Slide 19

2.3.1.4 Example 3 (Using RETURN )


CREATE PROC GROUPLEADER_MEMBERS
@Emp_Code varchar(10) = null
AS
IF @Emp_Code is null
BEGIN
PRINT 'Please enter Employee Code!'
RETURN
END
SELECT * FROM Employees
WHERE EMP_EMP_ID = (SELECT EMP_ID FROM
Employees
WHERE Emp_Code = @Emp_Code)
ORDER BY Emp_Name
Slide 20

2.3.2 Update a Procedure


ALTERPROC[EDURE]procedure_name
[ @parameter_namedata_type]
[=default] [OUTPUT]
[,...,n]
AS
t-sql_statement(s)

Slide 21

2.3.3 Delete a Procedure


DROPPROCEDURE procedure_name

Slide 22

3. Function
3.1
3.2
3.3
3.4

What is a Function?
Scalar functions Example
Inline Table-valued Functions Example
Multi-statement Table-Valued Functions Example

Slide 23

3.1 What is a Function?


See What Is a Stored Procedure? on slide 13
SQL Server supports three types of user-defined functions:
Scalar functions
Inline table-valued functions
Multi-statement table-valued functions

Slide 24

3.2 Scalar functions Example


CREATE FUNCTION Revenue_Day (@Date datetime) Returns money
AS
BEGIN
DECLARE @total money
SELECT @total = sum(sali_Quantity * sali_price)
FROM Sales_Orders s, Sales_Orders_Items si
WHERE s.sal_number = si.sal_number and year(sal_date) = year(@Date)
and month(sal_date) = month(@Date) and day(sal_date)= day(@Date)
RETURN @total
END

Use:
select dbo.Revenue_In_Day(GETDATE())
Slide 25

3.3 Inline Table-valued Functions Example


CREATE FUNCTION AveragePricebyItems (@price money = 0.0)
RETURNS table
AS
RETURN ( SELECT Ite_Description, Ite_Price
FROM Items
WHERE Ite_Price > @price)

Use:
select * from AveragePricebyItems (15.00)

Slide 26

3.4 Multi-statement Table-Valued Functions Example


CREATE FUNCTION AveragePricebyItems2 (@price money = 0.0)
RETURNS @table table (Description varchar(50) null, Price money
null) AS
begin
insert @table SELECT Ite_Description, Ite_Price
FROM Items
WHERE Ite_Price > @price
return
end

Use:
select * from AveragePricebyItems2 (15.00)

Slide 27

4. Trigger

4.1
4.2
4.3
4.4
4.5
4.6

What is a Trigger?
Creating Syntax
Disable/Enable syntax
Deleted and Inserted tables
Example
Other Functions

Slide 28

4.1 What is a Trigger?


A trigger is a special type of stored procedure that is
executed automatically as part of a data modification.
A trigger is created on a table and associated with one or
more actions linked with a data modification (INSERT,
UPDATE, or DELETE).
When one of the actions for which the trigger is defined
occurs, the trigger fires automatically
Following are some examples of trigger uses:

Slide 29

Maintenance of duplicate and derived data


Complex column constraints
Cascading referential integrity
Complex defaults
Inter-database referential integrity

4.2 Creating Syntax


CREATE TRIGGER trigger_name
ON <tablename>
<{FOR | AFTER}>
{[DELETE] [,] [INSERT] [,] [UPDATE]}
AS
SQL_Statement [...n]

Slide 30

4.3 Disable/Enable syntax


Disable syntax
Disable trigger <trigger_name> on <table_name>
Enable syntax
Enable trigger <trigger_name> on <table_name>

Slide 31

4.4 Deleted and Inserted tables


When you create a trigger, you have access to two temporary
tables (the deleted and inserted tables). They are referred to as
tables, but they are different from true database tables. They are
stored in memorynot on disk.
When the insert, update or delete statement is executed. All data
will be copied into these tables with the same structure.
Insert

Update

new
Inserted Table

new

Delete
old

old

Deleted Table

The values in the inserted and deleted tables are accessible only
within the trigger. Once the trigger is completed, these tables are
no longer accessible.
Slide 32

4.5 Example
CREATE TRIGGER Print_Update
ON Bicycle_Inventory
FOR UPDATE
AS
PRINT "The Bicycle_Inventory table was updated"

Slide 33

4.6 Other Functions


View contents of trigger
sp_helptext <trigger name>

View number of triggers of a table


sp_helptrigger <table name>

Slide 34

Slide 35

You might also like