Sunteți pe pagina 1din 17

Overview

Introduction to Stored Procedures


Creating, Executing, and Modifying Stored Procedures
Using Parameters in Stored Procedures Executing Extended Stored Procedures Handling Error Messages

Introduction to Stored Procedures


Defining Stored Procedures
Initial Processing of Stored Procedures
Subsequent Processing of Stored Procedures Advantages of Stored Procedures

Defining Stored Procedures

Named Collections of T-SQL Statements


Encapsulate Repetitive Tasks Five Types (System, Local, Temporary, Remote, and Extended) Accept Input Parameters and Return Values

Return Status Value to Indicate Success or Failure

Initial Processing of Stored Procedures

Creation

Parsing

Entries into sysobjects and syscomments tables

Execution (first time or recompile)

Optimization

Compilation

Compiled plan placed in procedure cache

Subsequent Processing of Stored Procedures

Advantages of Stored Procedures Enforce Business Rules


Shield Database Schema Details Provide Security Mechanisms Improve Performance Reduce Network Traffic

Creating, Executing, and Modifying Stored Procedures Creating Stored Procedures


Guidelines for Creating Stored Procedures Executing Stored Procedures Altering and Dropping Stored Procedures

Creating Stored Procedures


Create in Current Database with the CREATE
PROCEDURE Statement Use library GO CREATE PROC dbo.overdue_books AS SELECT * FROM dbo.loan WHERE due_date < GETDATE() GO

Can Nest to 32 Levels


Use sp_help to Display Information

Guidelines for Creating Stored Procedures

dbo User Should Own All Stored Procedures


One Stored Procedure for One Task Create, Test, and Debug on Server Avoid sp_Prefix in Stored Procedure Names Use Same Connection Settings for All Stored Procedures Minimize Use of Temporary Stored Procedures

Executing Stored Procedures


Executing a Stored Procedure by Itself EXEC overdue_books Executing a Stored Procedure Within an INSERT
Statement

INSERT INTO customers EXEC employee_customer

Altering and Dropping Stored Procedures

Altering Stored Procedures


Include any options in ALTER PROCEDURE Does not affect nested stored procedures

ALTER PROC overdue_books AS SELECT CONVERT(char(8), due_date, 1) date_due, isbn, copy_no, SUBSTRING(title,1,30) title, member_no, lastname FROM OverdueView ORDER BY due_date

Dropping Stored Procedures

Using Parameters in Stored Procedures Using Input Parameters


Executing Stored Procedures with Input Parameters Returning Values with Output Parameters Explicitly Recompiling Stored Procedures

Using Input Parameters Trap Missing or Invalid Parameter Values First


Provide Appropriate Default Values

CREATE PROC dbo.find_isbn @title longstring = null, @translation char(8) = English AS IF @title is null BEGIN PRINT Please provide a title (or partial title) and the translation PRINT find_isbn Oliver%, Japanese . . END

Executing Stored Procedures with Input Parameters


Passing Values by Reference
EXEC addadult @firstname = Linda, @lastname = LaBrie, @Street = Dogwood Drive, @city = Sacramento, @state = CA, @zip = 94203
Passing Values by Position

Returning Values with Output Parameters


CREATE PROC dbo.mathtutor @m1 smallint, @m2 smallint, @result smallint OUTPUT AS SET @result = @m1 * @m2

DECLARE @answer smallint EXEC mathtutor 5,6,@answer OUTPUT SELECT The result is : , @answer

The result is : 30

Explicitly Recompiling Stored Procedures


Recompile When
Stored procedure returns widely varying result sets A new index is added to an underlying table The parameter value is a typical Recompile by Using CREATE PROCEDURE [WITH RECOMPILE] EXECUTE [WITH RECOMPILE] sp_recompile

Executing Extended Stored Procedures


Increase SQL Server Functionality
Are Programmed Using Open Data Services API Can Include C and C++ Features Can Contain Multiple Functions Can be Called from a Client or SQL Server Can be Added to the master Database only

EXEC master..xp_cmdshell dir c:\mssql7

Handling Error Messages


RETURN Statement Exists Query or Procedures
Unconditionally

sp_addmessage creates custom error messages


@@ERROR contains error number for last executed statement RAISERROR Statement Returns user-defined or system error message Sets system flag to record error

S-ar putea să vă placă și