In this
article, I am going to discuss what exactly is Stored Procedure in SQL Server and
what are the advantages of using Stored Procedure as compared to simple SQL
Statements. As a SQL Server developer, it is the most important concept for you
to understand. As part of this article, we are going to discuss the following
pointers related to the Stored Procedure.
Why
we need a Stored Procedure in SQL Server?
Before
going to understand why we need Stored Procedure, let us first understand what
happens when we execute a simple SQL Statement on SQL Server. When any SQL
Statements fired on SQL Server, then three steps are happening in order which
is shown in the below image.
Syntax Checked:
This step ensures that the syntaxes are correct and there is no
error and it is ready for executing on SQL Server.
Plan Selected:
Once the syntaxes are checked, the second step is to select a
plan. The SQL Query must be using some tables. It will go and check what types
of indexes are exists on these tables, it will also check can use these indexes
or a table scan is fine. So, the second step is to select a proper plan to
execute the query.
Query Execution:
Once the plan is selected, the final step is to execute the query
and the output is seen by the end-user.
So, any SQL Statement fire on SQL Server should go through on
these three steps.
Now somehow, if we ensure that the first two steps (i.e. Syntax
Checked and Plan Selected) are executed only once, would not it be great. In
other words, the first time the SQL is executed, the syntaxes are checked, the
plan is selected and the plan is cached in memory. So, if the same SQL
statements executed again, then these two steps are not going to be executed,
rather the plan is taken from the cache and executed and that will definitely
increase the performance of the application which is shown in the below image.
This what exactly stored procedure does in SQL Server. When we
create a stored procedure, the syntaxes are checked while creating the
procedure or we can say at the design pattern. When we execute the procedure
for the first time, the best plan is selected and is cached in memory. And
after that whenever we execute the stored procedure, the query execution plan
is taken from the cache rather than creating again and again and executed.
Along with there are also more other advantages of using stored
procedures which we will discuss in our upcoming articles. With this keep in
mind, let us proceed and understand the SQL Server Stored Procedure in detail.
What is a Stored Procedure in SQL Server?
A SQL Server Stored Procedure is a database object which contains
pre-compiled queries (a group of T-SQL Statements). In other words, we can say
that the Stored Procedures are a block of code designed to perform a task whenever
we called.
How can we create a Stored Procedure in SQL Server?
In SQL
Server, you can create a stored procedure by using the CREATE PROCEDURE or CREATE PROC statement.
Again, you can create a procedure with or without parameters. Please have a look
at the below image for the Syntax of Stored Procedure.
SP without Parameter:
AS
sql_statement
GO;
SP with parameter:
A stored procedure is very much similar to a function in c, c++
languages or a method in java or .net languages. The procedure definitions
contain two parts in it
- Procedure header
- Procedure body
The content above “AS” is known as procedure header and the content
below the “AS” is
known as procedure body. If required we can pass the parameter to a
procedure to make the procedure more dynamic.
How to call a Procedure in SQL Server?
Once we create the stored procedure, then it is physically stored
on the server as a “database object” which can be called from anywhere
connecting to the server.
We can call the procedure from anywhere that is from a new query
window or from any application that is developed using java or .net language
also in three different ways as shown in the below image.
Execute ProcedureName Values
OR
EXEC ProcedureName Values
OR
ProcedureName Values
Note: Another way to execute a
stored procedure is to right-click on the procedure name in object explorer and
select “Execute
Stored Procedure”.
In this article, we will create the Stored Procedure Without
Parameters and in our next article, we will discuss Creating Stored Procedure
with input parameters.
Stored Procedure in SQL Server Without Parameter
The following stored procedure simply a welcome message on the
screen
CREATE
PROCEDURE spDisplayWelcome
AS
BEGIN
PRINT 'WELCOME TO PROCEDURE in SQL Server'
END
Calling a
Stored Procedure:
EXECUTE spDisplayWelcome
Or
EXEC spDisplayWelcome
Or
spDisplayWelcome
Output: WELCOME TO PROCEDURE in SQL Server
Note: While naming the
user-defined stored procedures we should not have to use “sp_” as
a prefix as it is recommended by Microsoft. The reason is all the
system-defined procedures in SQL Server are prefixed with “sp_”.
So to avoid the ambiguity between the user-defined stored procedure and the
system stored procedures and for any conflicts with some future coming system
procedure we should not use sp_ as a prefix to our user-defined stored
procedure.
Let’s see another example where we will fetch the data from a
database table.
We are going to use the following Employee table.
Please use the
following SQL Script to create and populate the Employee table with the
required sample data.
-- Create Employee Table
CREATE TABLE Employee
(
ID INT PRIMARY KEY,
Name VARCHAR(50),
Gender VARCHAR(50),
DOB DATETIME,
DeptID INT
)
GO
-- Populate the Employee Table with test data
INSERT INTO Employee VALUES(1, 'Pranaya', 'Male','1996-02-29 10:53:27.060', 1)
INSERT INTO Employee VALUES(2, 'Priyanka', 'Female','1995-05-25 10:53:27.060', 2)
INSERT INTO Employee VALUES(3, 'Anurag', 'Male','1995-04-19 10:53:27.060', 2)
INSERT INTO Employee VALUES(4, 'Preety', 'Female','1996-03-17 10:53:27.060', 3)
INSERT INTO Employee VALUES(5, 'Sambit', 'Male','1997-01-15 10:53:27.060', 1)
INSERT INTO Employee VALUES(6, 'Hina', 'Female','1995-07-12 10:53:27.060', 2)
GO
Create a
stored procedure to get the names, gender, and the dob of all employees from
the table Employee table.
CREATE PROCEDURE spGetEmployee
AS
BEGIN
Select Name, Gender, DOB from Employee
END
-- To Execute the Procedure
EXEC spGetEmployee
When we
execute the above statement it will give us the below output.
How to View the text of a Stored Procedure in SQL Server?
Once you created the stored procedure and later if you want to
view the text of the stored procedure then you need to use the sp_helptext system-defined
stored procedure by supplying the procedure name as a parameter as shown below
Example: sp_helptext spGetEmployee
Else just right click on the stored procedure in object explorer
Script procedure as Create To new query editor window
How to change the name and body of a stored procedure in SQL
Server?
CREATE PROCEDURE spGetEmployee
As
BEGIN
SELECT Name,Gender, DOB FROM Employee
END
-- How to change the body of a stored procedure
-- User Alter procedure to change the body
ALTER PROCEDURE spGetEmployee
AS
BEGIN
SELECT Name, Gender, DOB
FROM Employee
ORDER BY Name
END
-- To change the procedure name from spGetEmployee to spGetEmployee1
-- Use sp_rename system defined stored procedure
EXEC sp_rename 'spGetEmployee', 'spGetEmployee1'
How to Drop a Stored Procedure?
In order to drop a stored procedure, all you need to use the
following syntax
DROP PROCEDURE ProcedureName
Example: Drop proc spGetEmployee1 or Drop Procedure spGetEmployee1
In the next article, I will discuss the Stored Procedure with
input parameters. Here, in this article, I try to explain the Stored
Procedure in SQL Server with some examples. I hope now you
understand the need and use of Stored Procedure.
0 Comments