SlideShare a Scribd company logo
CIS-282
Scripts v. Stored Procedures
 Script: Text file of SQL commands
 Stored Procedure: SQL commands stored in database
 itself
   SPROC’s have more capabilities than a script
BATCH
 Batch is a logical group of SQL statements
    Run-time error will halt execution only of FURTHER
     steps
 Can break up multiple steps using GO
    Not available in all tools
    GO causes editing tool to send statements to that point
     for execution
    GO isn’t sent to SQL Server
Format of SPROC’s
     CREATE PROCEDURE <name>
      <parameter list>
     AS
      <instructions to execute>
EXECUTE
 EXEC(cute) statement
   OR
 EXEC(cute) stored procedure name
 Statement or sproc runs in it’s own scope
    Can’t ‘share’ variables directly
    User’s security rules apply
    Can’t be used in User Defined Function (UDF)
Uses of Stored Procedures
 For returning data (select)
 For editing data
 For calculations
Parameters
 Method for sending data into and from a stored
 procedure
   INPUT parameters are values sent in
   OUTPUT parameters are values returned
       Must have a holding space (variable) for the returned data
 Defined before start of procedure (AS)
Declaring Parameters
 Include name and datatype
 Default value is optional
   Without a default value, parameter is required
 Direction is optional (input is default)
   An output parameter must have direction specified
Sample Input Parameter
CREATE PROC upFindStudent
     @SID char(9)
AS
     SELECT *
      FROM Persons
        Where SchoolID=@SID
Sample Output Parameter
CREATE PROC upFindStudentID
   @First varchar(25),
   @Last varchar(35),
   @SID char(9) OUTPUT
AS
   SELECT @SID=SchoolID
     FROM Students_T
       Where @First=Firstname and
       @Last=Lastname
Return Values
 Result of stored procedure indicates success or failure
 Non-zero value indicates a problem
 Must be an integer
 Different from an output parameter
    Output parameter is about data
 RETURN <value>
    Causes immediate exit
Variables
 Create using DECLARE
 Need to start with ‘@’
 Can use SQL data types or custom data types


DECLARE @StudentName varchar(50)
Variable Assignment
 SET is usually used similar to procedural language
   SET @Var=value


 SELECT is usually used when getting a value from a
 query
  SELECT @Var=Sum(PossiblePoints) FROM Assignments
Decision Making
 SQL supports two structures for branching:
    IF
    CASE
 Both structures are similar to other languages (IF …
  THEN, SELECT CASE)
 Both structures tend to have specific places where used
IF Blocks
 IF … ELSE
    No end if
    Need to use Begin/End if have more than one
     instruction to execute
IF StartDate < EndDate
   Begin
   …
   End
ELSE
Simple Case Statement
   CASE
     Similar to SELECT CASE
     Compares one value to different cases
CASE Category
  WHEN ‘pop_comp’ THEN ‘Popular Computing’
  WHEN ‘mod_cook’ THEN ‘Modern Cooking’
END
Searched CASE
 No test expression
 Each WHEN has a boolean test


CASE
  WHEN Points >= 90 THEN ‘A’
  WHEN Points < 90 AND Extra > 0
    THEN ‘A’
END
Looping (While)
 Typically used with a CURSOR
    Cursor data type allows a table to be stored in memory
     and each row/field to be accessed
 BREAK allows early exit from loop
 CONTINUE forces control to start of loop
 Working with sets is preferred over loops (SQL is
  about sets)
Finding Identity Values
 When need to find the value used to identify the last
  row added
 @@Identity
 Scope_Identity
 Ident_Current
@@Identity
 System variable, created/maintained automatically
 Returns the last identity value used as a result of
  INSERT or SELECT INTO
   Not limited to current scope; may not get correct value
 Returns Null if operation failed or a value wasn’t
  generated
 Returns last number created if multiple inserts occur
  (i.e. SELECT INTO)
Scope_Identity()
 Return the last identity values generated in any table
  in the current session.
 Returns values inserted only within the current scope
   Not affected by other operations.
Ident_Current()
 Not limited by scope and session;
 Limited to a specified table (table name specified as an
 argument value).
@@Rowcount
 System variable, created/maintained automatically
 Number of rows returned or affected by the last
  statement
 0 (zero) is often used as a logical test
    If no records found for where clause, notify system or
    process
Errors
 Errors can occur because of SQL statement
    Invalid syntax, or data type
 Errors can also reflect business rules
    Data doesn’t match requirements
@@Error
 System variable, created/maintained automatically
 Value set after each SQL statement;
 0 (zero) means statement was successful
 Number other than zero is typically a specific error
 Can store value in variable and test
Try/Catch
 Similar to .Net languages
 Need to include BEGIN/END
  BEGIN TRY
    <code>
  END TRY
  BEGIN CATCH
    <error handling code>
  END CATCH
Raise Error
 Used to send information to calling program
 Syntax:
RaisError (Message string OR Message ID, Severity,
 State)
   Severity – <14 information; 15-19 warning or user
    can correct; 20+ fatal
   State – way to differentiate problems if needed;
    typically use 1
 RAISERROR (50001,16,1)
Error Message
 Message ID or String
    Use ID if have custom or TSQL error to use
    Use String for ‘on the fly’ message
 Stored Error Messages are server-specific
    Can add message to server
    ID Number must be greater than 50000
Custom Error Messages
 Messages can include a parameter with % to allow
 addition to message
   ‘D’ – signed integer
   ‘O’ – unsigned octal
   ‘P’ – pointer
   ‘S’ – string
   ‘U’ – unsigned integer
   ‘X’ or ‘x’ – unsigned hexadecimal
Severity & State
 1 – 18: Informational (range can vary – not exact)
    11 – 16 typically raise error at client
 19 – 25: Severe error
    20+ is fatal error and connection will terminate
 State is ‘ad hoc’ and can help if same error happens in
 multiple places
   Range of 1 – 127
Sample Error Message
 RaisError(‘Operation cannot be completed because
 field %s cannot be null’,1,1,’fieldname’)
Transactions
 Provides method for canceling an operation
 Can restore rows, columns to original state in event of
  error or business logic failure
 Use when changes will either be committed or
  discarded in entirety
ACID
 Atomicity: All of the changes will be accepted or none of
  the changes will be accepted
 Consistency: Data is either in its original or changed state
 Isolation: If multiple transactions occur, data is never
  available in an intermediate state
 Durability: Once finished, all changes are complete and
  changes can only be done by another transaction/unit of
  work
Using A Transaction
 Begin Tran: Identifies the start
 Commit Tran: Write changes
 Rollback Tran: Cancel changes


 Be sure to issue a Commit or Rollback
    Connection Stays Open Until Transaction is terminated
Locking & Concurrency
 Locking allows a transaction to ensure that it can
  rollback
 Prevents other operations from changing that data
 Concurrency refers to multiple actions running against
  database at the same time
   What happens if you want to change data I’m working
    with?
Sample Locking Levels
 Database
 Table
 Extent (memory)
 Page (subset of extent)
 Key
 Row
Cursors
 Processing based on each row
    not set operations
 Declare @Cursor Cursor
 Set @Cursor = Cursor For (select statement)
 Open @Cursor
 Fetch Next From @Cursor into (variables matching
 field list in select)
Using a Cursor
Declare @Students Cursor
Set @Cursor = Cursor For (Select FirstName, LastName From
  Students)
Open @Students
While @@Fetch_Status = 0
  Begin
  Fetch Next From @Students Into @First, @Last
  Print @First + ‘ ‘+ @Last
  End
Close @Students
Deallocate @Students
@@Fetch_Status
 0 success;
 -1 failed (read record outside recordset);
 -2 missing record (eg. someone else deleted)

More Related Content

PPTX
Sql server ___________session_18(stored procedures)
PPTX
PPS
Procedures/functions of rdbms
PPT
Intro to tsql unit 15
PPTX
Stored procedure in sql server
PPT
Intro to tsql unit 6
PPT
Intro to tsql unit 12
Sql server ___________session_18(stored procedures)
Procedures/functions of rdbms
Intro to tsql unit 15
Stored procedure in sql server
Intro to tsql unit 6
Intro to tsql unit 12

What's hot (18)

PPTX
Sql Functions And Procedures
PPTX
Chapter 4 functions, views, indexing
PPT
Lecture 2. MS SQL. Stored procedures.
DOC
3963066 pl-sql-notes-only
PPT
Intro to tsql
PDF
PPTX
Cursors, triggers, procedures
PPTX
Store procedures
PPTX
pl/sql Procedure
PPT
PL/SQL Introduction and Concepts
PPTX
Oracle: PLSQL Introduction
PPTX
Oracle: Procedures
PPT
oracle plsql training | oracle online training | oracle plsql demo | oracle p...
PPT
Oracle SQL, PL/SQL best practices
PPTX
PLSQL Tutorial
PDF
Stored-Procedures-Presentation
PPTX
4. plsql
PPTX
ORACLE PL SQL FOR BEGINNERS
Sql Functions And Procedures
Chapter 4 functions, views, indexing
Lecture 2. MS SQL. Stored procedures.
3963066 pl-sql-notes-only
Intro to tsql
Cursors, triggers, procedures
Store procedures
pl/sql Procedure
PL/SQL Introduction and Concepts
Oracle: PLSQL Introduction
Oracle: Procedures
oracle plsql training | oracle online training | oracle plsql demo | oracle p...
Oracle SQL, PL/SQL best practices
PLSQL Tutorial
Stored-Procedures-Presentation
4. plsql
ORACLE PL SQL FOR BEGINNERS
Ad

Viewers also liked (12)

DOCX
Tools developed
DOC
Complete list of all sap abap keywords
PDF
Test percepción.
PPTX
Test de Boston
PDF
87683689 ooad-lab-record
PPTX
Seating arrangement
PDF
Design of a Computerized Inventory Management System for Supermarkets
PPTX
Project on examination management system
DOC
Abstract
DOCX
Library Management System
PDF
Ames cloud a framework of adaptive mobile video streaming and efficient socia...
DOCX
Ops 571 free final exam sg 2014
Tools developed
Complete list of all sap abap keywords
Test percepción.
Test de Boston
87683689 ooad-lab-record
Seating arrangement
Design of a Computerized Inventory Management System for Supermarkets
Project on examination management system
Abstract
Library Management System
Ames cloud a framework of adaptive mobile video streaming and efficient socia...
Ops 571 free final exam sg 2014
Ad

Similar to Stored procedures (20)

PPT
Intro to tsql unit 11
PPTX
Exception handling in SQL with Execution
PPT
Intro to tsql unit 14
PDF
Database development coding standards
PPTX
PLSQLmy Updated (1).pptx
PPS
Procedures functions structures in VB.Net
PPT
ADO.Net Improvements in .Net 2.0
PPT
Module04
PPT
7a advanced tsql
PPTX
PLSQL.pptxokokokoo9oooodjdjfjfjfjrjejrjrrjrj
PPT
JDBC – Java Database Connectivity
PPT
PPTX
PPT
L9 l10 server side programming
PPTX
HPD SQL Training - Beginner - 20220916.pptx
PPTX
Sql Server 2008 New Programmability Features
Intro to tsql unit 11
Exception handling in SQL with Execution
Intro to tsql unit 14
Database development coding standards
PLSQLmy Updated (1).pptx
Procedures functions structures in VB.Net
ADO.Net Improvements in .Net 2.0
Module04
7a advanced tsql
PLSQL.pptxokokokoo9oooodjdjfjfjfjrjejrjrrjrj
JDBC – Java Database Connectivity
L9 l10 server side programming
HPD SQL Training - Beginner - 20220916.pptx
Sql Server 2008 New Programmability Features

More from Randy Riness @ South Puget Sound Community College (20)

Recently uploaded (20)

PDF
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
PDF
01-Introduction-to-Information-Management.pdf
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PDF
O7-L3 Supply Chain Operations - ICLT Program
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PDF
Pre independence Education in Inndia.pdf
PDF
Complications of Minimal Access Surgery at WLH
PPTX
Cell Types and Its function , kingdom of life
PDF
102 student loan defaulters named and shamed – Is someone you know on the list?
PDF
RMMM.pdf make it easy to upload and study
PPTX
Pharma ospi slides which help in ospi learning
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PDF
Insiders guide to clinical Medicine.pdf
PDF
VCE English Exam - Section C Student Revision Booklet
PPTX
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
PDF
Business Ethics Teaching Materials for college
PPTX
Institutional Correction lecture only . . .
PPTX
Week 4 Term 3 Study Techniques revisited.pptx
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
01-Introduction-to-Information-Management.pdf
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
O7-L3 Supply Chain Operations - ICLT Program
human mycosis Human fungal infections are called human mycosis..pptx
Pre independence Education in Inndia.pdf
Complications of Minimal Access Surgery at WLH
Cell Types and Its function , kingdom of life
102 student loan defaulters named and shamed – Is someone you know on the list?
RMMM.pdf make it easy to upload and study
Pharma ospi slides which help in ospi learning
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
Insiders guide to clinical Medicine.pdf
VCE English Exam - Section C Student Revision Booklet
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
Business Ethics Teaching Materials for college
Institutional Correction lecture only . . .
Week 4 Term 3 Study Techniques revisited.pptx
Chapter 2 Heredity, Prenatal Development, and Birth.pdf

Stored procedures

  • 2. Scripts v. Stored Procedures  Script: Text file of SQL commands  Stored Procedure: SQL commands stored in database itself  SPROC’s have more capabilities than a script
  • 3. BATCH  Batch is a logical group of SQL statements  Run-time error will halt execution only of FURTHER steps  Can break up multiple steps using GO  Not available in all tools  GO causes editing tool to send statements to that point for execution  GO isn’t sent to SQL Server
  • 4. Format of SPROC’s CREATE PROCEDURE <name> <parameter list> AS <instructions to execute>
  • 5. EXECUTE  EXEC(cute) statement OR  EXEC(cute) stored procedure name  Statement or sproc runs in it’s own scope  Can’t ‘share’ variables directly  User’s security rules apply  Can’t be used in User Defined Function (UDF)
  • 6. Uses of Stored Procedures  For returning data (select)  For editing data  For calculations
  • 7. Parameters  Method for sending data into and from a stored procedure  INPUT parameters are values sent in  OUTPUT parameters are values returned  Must have a holding space (variable) for the returned data  Defined before start of procedure (AS)
  • 8. Declaring Parameters  Include name and datatype  Default value is optional  Without a default value, parameter is required  Direction is optional (input is default)  An output parameter must have direction specified
  • 9. Sample Input Parameter CREATE PROC upFindStudent @SID char(9) AS SELECT * FROM Persons Where SchoolID=@SID
  • 10. Sample Output Parameter CREATE PROC upFindStudentID @First varchar(25), @Last varchar(35), @SID char(9) OUTPUT AS SELECT @SID=SchoolID FROM Students_T Where @First=Firstname and @Last=Lastname
  • 11. Return Values  Result of stored procedure indicates success or failure  Non-zero value indicates a problem  Must be an integer  Different from an output parameter  Output parameter is about data  RETURN <value>  Causes immediate exit
  • 12. Variables  Create using DECLARE  Need to start with ‘@’  Can use SQL data types or custom data types DECLARE @StudentName varchar(50)
  • 13. Variable Assignment  SET is usually used similar to procedural language SET @Var=value  SELECT is usually used when getting a value from a query SELECT @Var=Sum(PossiblePoints) FROM Assignments
  • 14. Decision Making  SQL supports two structures for branching:  IF  CASE  Both structures are similar to other languages (IF … THEN, SELECT CASE)  Both structures tend to have specific places where used
  • 15. IF Blocks  IF … ELSE  No end if  Need to use Begin/End if have more than one instruction to execute IF StartDate < EndDate Begin … End ELSE
  • 16. Simple Case Statement  CASE  Similar to SELECT CASE  Compares one value to different cases CASE Category WHEN ‘pop_comp’ THEN ‘Popular Computing’ WHEN ‘mod_cook’ THEN ‘Modern Cooking’ END
  • 17. Searched CASE  No test expression  Each WHEN has a boolean test CASE WHEN Points >= 90 THEN ‘A’ WHEN Points < 90 AND Extra > 0 THEN ‘A’ END
  • 18. Looping (While)  Typically used with a CURSOR  Cursor data type allows a table to be stored in memory and each row/field to be accessed  BREAK allows early exit from loop  CONTINUE forces control to start of loop  Working with sets is preferred over loops (SQL is about sets)
  • 19. Finding Identity Values  When need to find the value used to identify the last row added  @@Identity  Scope_Identity  Ident_Current
  • 20. @@Identity  System variable, created/maintained automatically  Returns the last identity value used as a result of INSERT or SELECT INTO  Not limited to current scope; may not get correct value  Returns Null if operation failed or a value wasn’t generated  Returns last number created if multiple inserts occur (i.e. SELECT INTO)
  • 21. Scope_Identity()  Return the last identity values generated in any table in the current session.  Returns values inserted only within the current scope  Not affected by other operations.
  • 22. Ident_Current()  Not limited by scope and session;  Limited to a specified table (table name specified as an argument value).
  • 23. @@Rowcount  System variable, created/maintained automatically  Number of rows returned or affected by the last statement  0 (zero) is often used as a logical test  If no records found for where clause, notify system or process
  • 24. Errors  Errors can occur because of SQL statement  Invalid syntax, or data type  Errors can also reflect business rules  Data doesn’t match requirements
  • 25. @@Error  System variable, created/maintained automatically  Value set after each SQL statement;  0 (zero) means statement was successful  Number other than zero is typically a specific error  Can store value in variable and test
  • 26. Try/Catch  Similar to .Net languages  Need to include BEGIN/END BEGIN TRY <code> END TRY BEGIN CATCH <error handling code> END CATCH
  • 27. Raise Error  Used to send information to calling program  Syntax: RaisError (Message string OR Message ID, Severity, State)  Severity – <14 information; 15-19 warning or user can correct; 20+ fatal  State – way to differentiate problems if needed; typically use 1  RAISERROR (50001,16,1)
  • 28. Error Message  Message ID or String  Use ID if have custom or TSQL error to use  Use String for ‘on the fly’ message  Stored Error Messages are server-specific  Can add message to server  ID Number must be greater than 50000
  • 29. Custom Error Messages  Messages can include a parameter with % to allow addition to message  ‘D’ – signed integer  ‘O’ – unsigned octal  ‘P’ – pointer  ‘S’ – string  ‘U’ – unsigned integer  ‘X’ or ‘x’ – unsigned hexadecimal
  • 30. Severity & State  1 – 18: Informational (range can vary – not exact)  11 – 16 typically raise error at client  19 – 25: Severe error  20+ is fatal error and connection will terminate  State is ‘ad hoc’ and can help if same error happens in multiple places  Range of 1 – 127
  • 31. Sample Error Message  RaisError(‘Operation cannot be completed because field %s cannot be null’,1,1,’fieldname’)
  • 32. Transactions  Provides method for canceling an operation  Can restore rows, columns to original state in event of error or business logic failure  Use when changes will either be committed or discarded in entirety
  • 33. ACID  Atomicity: All of the changes will be accepted or none of the changes will be accepted  Consistency: Data is either in its original or changed state  Isolation: If multiple transactions occur, data is never available in an intermediate state  Durability: Once finished, all changes are complete and changes can only be done by another transaction/unit of work
  • 34. Using A Transaction  Begin Tran: Identifies the start  Commit Tran: Write changes  Rollback Tran: Cancel changes  Be sure to issue a Commit or Rollback  Connection Stays Open Until Transaction is terminated
  • 35. Locking & Concurrency  Locking allows a transaction to ensure that it can rollback  Prevents other operations from changing that data  Concurrency refers to multiple actions running against database at the same time  What happens if you want to change data I’m working with?
  • 36. Sample Locking Levels  Database  Table  Extent (memory)  Page (subset of extent)  Key  Row
  • 37. Cursors  Processing based on each row  not set operations  Declare @Cursor Cursor  Set @Cursor = Cursor For (select statement)  Open @Cursor  Fetch Next From @Cursor into (variables matching field list in select)
  • 38. Using a Cursor Declare @Students Cursor Set @Cursor = Cursor For (Select FirstName, LastName From Students) Open @Students While @@Fetch_Status = 0 Begin Fetch Next From @Students Into @First, @Last Print @First + ‘ ‘+ @Last End Close @Students Deallocate @Students
  • 39. @@Fetch_Status  0 success;  -1 failed (read record outside recordset);  -2 missing record (eg. someone else deleted)