Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Introduction To
DBMS and SQL Server
Stored Procedures
Stored Procedures
• A stored procedure is a method to encapsulate
repetitive tasks.
• A stored Procedure is actually stored in
database data dictionary
Without Stored Procedure
Employee.jsp
......................
Select * from
tbl_employee
................
Report.php
..........................
Select * from
tbl_employee
.................
.....................
Select * from
tbl_employee
viewDetails.php
..........................
.........................
Select * from
tbl_employee
...............
Database
Stored Procedure
Employee.php
..........................
..........................
exec
getName();
................
Report.php
..........................
.........................
..........................
exec
getName();
viewDetails.php
..........................
.........................
exec
getName();
...............
getName()
Begin
Select * from tbl_employee
End
Database
Advantages
• Precompiled Execution
•sqlserver compiles each stored procedure once and
then re utilizes the execution plan. This result in
tremendous performance boosts when stored
procedures are called repeatedly
• Reduced client server traffic
•If network traffic is concerned you will be happy to
learn that stored procedures can reduce long sql
queries to a single line that is transmitted between
application program and database server.
Advantages
• Efficient reuse of code and programming abstraction
•Stored procedures can be used by multiple programs
and users. If you utilize them in a planned manner,
you’ll find the development cycle takes less time.
• Enhanced Security Control
•You can grant users permission to execute stored
procedure independently of underlying table
permissions
How to create Stored Procedure ?
example
CREATE PROCEDURE getName(@id int)
as
BEGIN
Select * from tbl_user where userid=@id;
END
EXEC getName @id=1 ;
How to create Stored Procedure ?
example
CREATE PROCEDURE getName(@id int)
BEGIN
Select * from tbl_user where userid=@id;
END
EXEC getName @id=1;
Is the keyword to create a new stored
procedure .we can use proc also
How to create Stored Procedure ?
example
CREATE PROCEDURE getName(@id int)
BEGIN
Select * from tbl_user where userid=@id;
END
EXEC getName @id=1
Is the name of the stored
procedure that we are creating
How to create Stored Procedure
? example
CREATE PROCEDURE getName ( @id int)
BEGIN
Select * from tbl_user where userid=@id;
END
Call getName @id=1;
Is the body of the stored procedure. Here we
have only a single select query statements.
We can also apply logic using the below
• DECLARE a INT; : declaring an integer
type variable
• SET a=20; : Setting value of a
to 20
• IF THEN
• ELSE IF
label1: LOOP
SET p1 = p1 + 1;
IF p1 < 10 THEN
ITERATE label1;
END IF;
LEAVE label1;
END LOOP label1;
: For conditions
: Loops
How to create Stored Procedure ?
example
CREATE PROCEDURE getName ( @id int)
BEGIN
Select * from tbl_user where userid=@id;
END
exec getName=@id=1;
How to create Stored Procedure ?
example
CREATE PROCEDURE getName ( @id int)
BEGIN
Select * from tbl_user where userid=@id;
END
exec getName @id=1;
Calling the stored procedure we’ve
just created and passing the value
1001 as its argument
How to create Stored Procedure ?
example
CREATE PROCEDURE getSale1(@id int,@pri int output ,@sal int
output)
as BEGIN
Select @pri=sum(price), @sal=avg(sales) from tbl_sales
where pk_int_id=@id;
END
declare @total int
declare @sale int
exec getSale1 @id=1,@pri=@total output,@sal=@sale output;
select @total; select @sale;
• Create the below table
Create a stored procedure called
– csp_getSalary(1000) : should return the salary of employee with id as
passed in the argument
– Csp_getSalaryAtPlace(‘calicut’,@total) : should return the total salary of
employees from a perticular place
Live Task
Tbl_employee
Emp_id Emp_name Emp_age Emp_email int_salary vchr_place
1000 Deepak 24 dk@gmail.com 10000 Calicut
1001 Aneesh 23 an@gmail.com 20000 Cochin
1002 Naveen 25 nn@gmail.com 10000 Calicut
1003 Jacob 25 jb@gmail.com 30000 Cochin
Cursors
• SELECT INTO is fine for single-row queries, but many
applications require the querying of multiple rows of data.
You will use a cursor in SQL Server to accomplish this.
• A cursor lets you fetch one or more rows from a SQL result set
into stored program variables, usually with the intention of
performing some row-by-row processing on the result set.
Cursors - example
create procedure CSP_status_change
as begin
declare @done int;
set @done=0;
declare @studId int;
declare @studStatus bit;
declare @dateDif int;
declare @myCur cursor
set @myCur = cursor for select
pk_int_student_id,bln_student_status,
datediff(day,dat_fph_date,GETDATE())as date_difference from
tbl_students
join tbl_fee_payment_history on
fk_int_student_id=pk_int_student_id;
open @myCur
fetch next from @myCur into @studId,@studStatus,@dateDif;
while @@FETCH_STATUS = 0 begin
if @dateDif>15
update tbl_students set bln_student_status=0 where
pk_int_student_id=@studId;
else
update tbl_students set bln_student_status=1 where
pk_int_student_id=@studId;
fetch next from @myCur into @studId,@studStatus,@dateDif;
end;
close @myCur;
deallocate @myCur;
END;
exec CSP_status_change;
fetch next from @myCur
Questions?
“A good question deserve a good
grade…”
Self Check !!
• Why should someone use stored procedure?
– To avoid data redundancy
– To reduce network traffic between
application server and database server
– To ensure data integrity
Self Check !!
• Why should someone use stored procedure?
– To avoid data redundancy
– To reduce network traffic between
application server and database server
– To ensure data integrity
Self Check !!
Self Check !!
• Why should someone change the delimiter before
creating a stored procedure?
– To use ; as separation between multiple statements in a
stored procedure body
– To push the server to compile the whole body of stored
procedure all together
– Both of above
– None of above
Self Check !!
• Why should someone change the delimiter before
creating a stored procedure?
– To use ; as separation between multiple statements in a
stored procedure body
– To push the server to compile the whole body of stored
procedure all together
– Both of above
– None of above
Self Check !!
CREATE PROCEDURE simpleProc ( OUT param1 INT)
BEGIN
SELECT COUNT(*) INTO param1 FROM t ;
END
EXEC simpleProc(@a);
Select @a ;
Self Check !!
CREATE PROCEDURE simpleProc ( @param1 INT)
BEGIN
SELECT COUNT(*) INTO param1 FROM t ;
END
exec simpleProc(@a);
Select @a ;
Self Check !!
What are the uses of cursors?
•For extracting multiple rows from a table
•For extracting multiple rows into variables from a table
•For setting handlers
Self Check !!
What are the uses of cursors?
•For extracting multiple rows from a table
•For extracting multiple rows into variables from a table
•For setting handlers
End of day 1

More Related Content

Chapter 3 stored procedures

  • 1. Introduction To DBMS and SQL Server Stored Procedures
  • 2. Stored Procedures • A stored procedure is a method to encapsulate repetitive tasks. • A stored Procedure is actually stored in database data dictionary
  • 3. Without Stored Procedure Employee.jsp ...................... Select * from tbl_employee ................ Report.php .......................... Select * from tbl_employee ................. ..................... Select * from tbl_employee viewDetails.php .......................... ......................... Select * from tbl_employee ............... Database
  • 5. Advantages • Precompiled Execution •sqlserver compiles each stored procedure once and then re utilizes the execution plan. This result in tremendous performance boosts when stored procedures are called repeatedly • Reduced client server traffic •If network traffic is concerned you will be happy to learn that stored procedures can reduce long sql queries to a single line that is transmitted between application program and database server.
  • 6. Advantages • Efficient reuse of code and programming abstraction •Stored procedures can be used by multiple programs and users. If you utilize them in a planned manner, you’ll find the development cycle takes less time. • Enhanced Security Control •You can grant users permission to execute stored procedure independently of underlying table permissions
  • 7. How to create Stored Procedure ? example CREATE PROCEDURE getName(@id int) as BEGIN Select * from tbl_user where userid=@id; END EXEC getName @id=1 ;
  • 8. How to create Stored Procedure ? example CREATE PROCEDURE getName(@id int) BEGIN Select * from tbl_user where userid=@id; END EXEC getName @id=1; Is the keyword to create a new stored procedure .we can use proc also
  • 9. How to create Stored Procedure ? example CREATE PROCEDURE getName(@id int) BEGIN Select * from tbl_user where userid=@id; END EXEC getName @id=1 Is the name of the stored procedure that we are creating
  • 10. How to create Stored Procedure ? example CREATE PROCEDURE getName ( @id int) BEGIN Select * from tbl_user where userid=@id; END Call getName @id=1; Is the body of the stored procedure. Here we have only a single select query statements. We can also apply logic using the below • DECLARE a INT; : declaring an integer type variable • SET a=20; : Setting value of a to 20 • IF THEN • ELSE IF label1: LOOP SET p1 = p1 + 1; IF p1 < 10 THEN ITERATE label1; END IF; LEAVE label1; END LOOP label1; : For conditions : Loops
  • 11. How to create Stored Procedure ? example CREATE PROCEDURE getName ( @id int) BEGIN Select * from tbl_user where userid=@id; END exec getName=@id=1;
  • 12. How to create Stored Procedure ? example CREATE PROCEDURE getName ( @id int) BEGIN Select * from tbl_user where userid=@id; END exec getName @id=1; Calling the stored procedure we’ve just created and passing the value 1001 as its argument
  • 13. How to create Stored Procedure ? example CREATE PROCEDURE getSale1(@id int,@pri int output ,@sal int output) as BEGIN Select @pri=sum(price), @sal=avg(sales) from tbl_sales where pk_int_id=@id; END declare @total int declare @sale int exec getSale1 @id=1,@pri=@total output,@sal=@sale output; select @total; select @sale;
  • 14. • Create the below table Create a stored procedure called – csp_getSalary(1000) : should return the salary of employee with id as passed in the argument – Csp_getSalaryAtPlace(‘calicut’,@total) : should return the total salary of employees from a perticular place Live Task Tbl_employee Emp_id Emp_name Emp_age Emp_email int_salary vchr_place 1000 Deepak 24 dk@gmail.com 10000 Calicut 1001 Aneesh 23 an@gmail.com 20000 Cochin 1002 Naveen 25 nn@gmail.com 10000 Calicut 1003 Jacob 25 jb@gmail.com 30000 Cochin
  • 15. Cursors • SELECT INTO is fine for single-row queries, but many applications require the querying of multiple rows of data. You will use a cursor in SQL Server to accomplish this. • A cursor lets you fetch one or more rows from a SQL result set into stored program variables, usually with the intention of performing some row-by-row processing on the result set.
  • 16. Cursors - example create procedure CSP_status_change as begin declare @done int; set @done=0; declare @studId int; declare @studStatus bit; declare @dateDif int; declare @myCur cursor set @myCur = cursor for select pk_int_student_id,bln_student_status, datediff(day,dat_fph_date,GETDATE())as date_difference from tbl_students join tbl_fee_payment_history on fk_int_student_id=pk_int_student_id; open @myCur
  • 17. fetch next from @myCur into @studId,@studStatus,@dateDif; while @@FETCH_STATUS = 0 begin if @dateDif>15 update tbl_students set bln_student_status=0 where pk_int_student_id=@studId; else update tbl_students set bln_student_status=1 where pk_int_student_id=@studId; fetch next from @myCur into @studId,@studStatus,@dateDif; end; close @myCur; deallocate @myCur; END; exec CSP_status_change; fetch next from @myCur
  • 18. Questions? “A good question deserve a good grade…”
  • 20. • Why should someone use stored procedure? – To avoid data redundancy – To reduce network traffic between application server and database server – To ensure data integrity Self Check !!
  • 21. • Why should someone use stored procedure? – To avoid data redundancy – To reduce network traffic between application server and database server – To ensure data integrity Self Check !!
  • 22. Self Check !! • Why should someone change the delimiter before creating a stored procedure? – To use ; as separation between multiple statements in a stored procedure body – To push the server to compile the whole body of stored procedure all together – Both of above – None of above
  • 23. Self Check !! • Why should someone change the delimiter before creating a stored procedure? – To use ; as separation between multiple statements in a stored procedure body – To push the server to compile the whole body of stored procedure all together – Both of above – None of above
  • 24. Self Check !! CREATE PROCEDURE simpleProc ( OUT param1 INT) BEGIN SELECT COUNT(*) INTO param1 FROM t ; END EXEC simpleProc(@a); Select @a ;
  • 25. Self Check !! CREATE PROCEDURE simpleProc ( @param1 INT) BEGIN SELECT COUNT(*) INTO param1 FROM t ; END exec simpleProc(@a); Select @a ;
  • 26. Self Check !! What are the uses of cursors? •For extracting multiple rows from a table •For extracting multiple rows into variables from a table •For setting handlers
  • 27. Self Check !! What are the uses of cursors? •For extracting multiple rows from a table •For extracting multiple rows into variables from a table •For setting handlers