chapter 3 stored procedures

Post on 27-Jul-2015

224 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Select * from tbl_employee

Select * from tbl_employee

Select * from tbl_employee

Stored Procedure

Employee.php....................................................

exec getName();................

Report.php.............................................................................

exec getName();

viewDetails.php...................................................

exec getName();...............

getName()BeginSelect * 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

BEGINSelect * 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)

BEGINSelect * 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;

ENDdeclare @total intdeclare @sale intexec 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_employeeEmp_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 - examplecreate procedure CSP_status_changeas begindeclare @done int;set @done=0;declare @studId int;declare @studStatus bit;declare @dateDif int;declare @myCur cursorset @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

top related