Dexterity | CONFIDENTIAL 2009 MRO | Analytics | Insights 1 Stored Procedures.
-
Upload
frederick-fletcher -
Category
Documents
-
view
215 -
download
3
Transcript of Dexterity | CONFIDENTIAL 2009 MRO | Analytics | Insights 1 Stored Procedures.
Dexterity | CONFIDENTIAL 2009 MRO | Analytics | Insights 1
Stored Procedures
Dexterity | CONFIDENTIAL 2009 MRO | Analytics | Insights 2
Stored Procedure
A stored procedure is a precompiled object stored in the databaseA stored procedure is a group of Transact-SQL statements compiled into a single execution plan.Accept input parameters and return multiple values in the form of
output parameters to the calling procedureContain programming statements that perform operations in the
database, including calling other procedures Return a status value to a calling procedure or batch to indicate
success or failure.
Dexterity | CONFIDENTIAL 2009 MRO | Analytics | Insights 3
Execution Plan
The way that a statement can be physically executed is called an execution plan or a query plan
Dexterity | CONFIDENTIAL 2009 MRO | Analytics | Insights 4
Implementing Stored Procedure
CREATE PROCEDURE proc_nameASBEGIN sql_statementENDEX:CREATE PROCEDURE STOREAS BEGINSELECT * FROM STUDENTEND
Dexterity | CONFIDENTIAL 2009 MRO | Analytics | Insights 5
Executing Stored Procedure
EXEC/EXECUTE PROCEDURE proc_name
EX: EXEC store EXEC "My Stored Procedure"
ALTER STORED PROCEDUREEX: ALTER PROCEDURE store AS BEGIN select id, name from student END
DROP STORED PROCEDURE DROP PROCEDURE store
Dexterity | CONFIDENTIAL 2009 MRO | Analytics | Insights 6
Parameterized Stored Procedure
CREATE PROC store @id int, @name varchar(10)ASBEGIN select name from student where id=@idEND------------------------------------------EXEC store 1, ’balaji’
EXEC store @name=‘balaji’, @id=1
VIEW THE CODE OF STORED PROCEDURE sp_helptext store create procedure store as begin select * from student end
Dexterity | CONFIDENTIAL 2009 MRO | Analytics | Insights 7
Returning Values
CREATE PROC store @id intASBEGIN IF @id>0 RETURN 1 ELSE RETURN 0 END------------------------------------------EXEC store 1
Dexterity | CONFIDENTIAL 2009 MRO | Analytics | Insights 8
OUTPUT parameter
CREATE PROC store @id int, @name varchar(10) OUTPUT, @adrs varchar(10) OUTPUTASBEGIN IF @id>0 SET @name=‘balaji’ SET @adrs=‘chennai’ RETURN 1 ELSE RETURN 0 END------------------------------------------DECLARE @name varchar(10), @adrs varchar(10)EXEC store 1,@name OUTPUT, @adrs OUTPUTPRINT @namePRINT @adrs
Dexterity | CONFIDENTIAL 2009 MRO | Analytics | Insights 9
Disadvantage
If your data changes a lot then you'd have to recompile a sproc a lot because cached query plans aren't optimal for current data.
Stored procedure languages are quite often vendor-specific. If you want to switch to using another vendor's database, then you have to rewrite your stored procedures
Dexterity | CONFIDENTIAL 2009 MRO | Analytics | Insights 10
Secured Stored Procedure
Embed sp_password/alter login in the code, as a comment
Example: CREATE PROCEDURE store
WITH ENCRYPTION AS BEGIN 'SQL statements' -- sp_password/alter login END
Dexterity | CONFIDENTIAL 2009 MRO | Analytics | Insights 11
SET NOCOUNT
Stops the message that shows the count of the number of rows affected by aTransact SQL statement or stored procedure from being returned as part of theresult set.
These relentless interactions create overhead on the processing and inmost cases are not necessaryEXCREATE PROCEDURE STOREAS SET NOCOUNT ONBEGINSELECT * FROM STUDENTEND
Dexterity | CONFIDENTIAL 2009 MRO | Analytics | Insights 12
Passing table valued parameters in SQL Server 2008
SQL Server 2008 introduces the ability to pass a table data type into stored proceduresand functionsCREATE TYPE STUDENTTABLETYPE AS TABLE(ID INT,SNAME VARCHAR(10),ADRS VARCHAR(10))
DECLARE @tb STUDENTTABLETYPEInsert into @tb values (5, ‘raj, ‘kovai’), (6, ‘ravi, ‘ch’), (7, ‘balu’, ‘madurai’)
CREATE PROCEDURE store(@table STUDENTTABLETYPE READONLY)AS BEGINinsert into student select * from @table where id=5END
Exec store @tb
Dexterity | CONFIDENTIAL 2009 MRO | Analytics | Insights 13
Dexterity | CONFIDENTIAL 2009 MRO | Analytics | Insights 14
Thank You
Questions ???