DBMS Lab # 9 Procedures PDF

Download as pdf or txt
Download as pdf or txt
You are on page 1of 7
 
 
2017-CP
DBMS LAB 9
SQL Stored Procedures
Engr. Shahid Ali Bhutta
UNIVERSITY OF ENGINEERING & TECHNOLOGY, TAXILA
 
 
Lab Instructor: Engr. Shahid Ali
 1
Stored Procedures
Overview
A stored procedure is nothing more than prepared SQL code that you save so you can reuse the code over and over again. So if you think about a query that you write over and over again, instead of having to write that query each time you would save it as a stored procedure and then just call the stored procedure to execute the SQL code that you saved as part of the stored procedure. In addition to running the same SQL code over and over again you also have the ability to  pass parameters to the stored procedure, so depending on what the need is, stored procedure can act accordingly based on the parameter values that were passed. Some of the topics we will cover include:
 
 
 
 
Modifying a procedure
 
Deleting a procedure
Creating a simple stored procedure
Before you create a stored procedure you need to know what your end result is, whether you are selecting data, inserting data, etc.. In this simple example we will just select all data from the Persons table that is stored in a specific database. Lets name this database as
dbmsLab
. So the simple T-SQL code executing in
dbmsLab
 selected database would be as follows which will return all rows from this table.
SELECT * FROM Persons
To create a stored procedure the code would look like this:
USE dbmsLab GO CREATE PROCEDURE Proc_Persons_GetAddress AS SELECT * FROM Persons GO
To call the procedure to return the contents from the table specified, the code would be:
EXEC Proc_Persons_GetAddressfx --or just simply
5
 
 
Lab Instructor: Engr. Shahid Ali
 2
Proc_Persons_GetAddress
 When creating a stored procedure you can either use CREATE PROCEDURE or CREATE PROC. After the stored procedure name you need to use the keyword "AS" and then the rest is just the regular SQL code that you normally execute. One thing to note is that you cannot use the keyword "GO" within the stored Procedure. Once the SQL Server compiler sees "GO" it assumes it is the end of the batch. Also, you cannot change database context within the stored procedure such as using "USE dbName" the reason for this is because this would be a separate batch and a stored procedure is a collection of only one batch of statements.
Passing parameter values to a stored procedure
Just like you have the ability to use parameters with your SQL code you can also setup your stored procedures to accept one or more parameter values.
One Parameter
In this example we will query the Persons table from the dbmsLab database, but instead of getting all records we will limit it to just a particular city. This example assumes there will  be an exact match on the City value that is passed.
USE dbmsLab GO CREATE PROCEDURE Proc_Persons_GetAddress @City nvarchar(30) AS SELECT * FROM Person WHERE City = @City GO
To call this stored procedure we would execute it as follows:
EXEC Proc_Persons_GetAddress @City = 'New York'
We can also do the same thing, but allow the users to give us a starting point to search the data. Here we can replace "=" by a LIKE and use the "%" wildcard.
USE dbmsLab GO CREATE PROCEDURE Proc_Persons_GetAddress @City nvarchar(30) AS SELECT * FROM Person WHERE City LIKE @City + '%' GO
In both of the proceeding examples it assumes that a parameter value will always be  passed. If you try to execute the procedure without passing a parameter value you will get an error message such as the following:
5
 
 
Lab Instructor: Engr. Shahid Ali
 3 Msg 201, Level 16, State 4, Procedure uspGetAddress, Line 0 Procedure or function 'uspGetAddress' expects parameter '@City', which was not supplied. 
Default Parameter Values
In most cases it is always a good practice to pass all parameter values, but sometimes it is not  possible. So in this example we use the NULL option to allow you to not pass a parameter value. If we create and run this stored procedure it will not return any data.
USE dbmsLab GO CREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30) = NULL AS SELECT * FROM Person WHERE City = @City GO EXEC dbo.uspGetAddress;
We could change this stored procedure and use the ISNULL function to get around this. So if a value is passed it will use the value to narrow the result set and if a value is not passed it will return all records. (
Note:
 if the City column has NULL values this will not include these values. You will have to add additional logic for City IS NULL)
Syntax for ISNULL()
ISNULL(
expression
,
alternate_value
)
 
USE dbmsLab GO CREATE PROCEDURE Proc_Persons_GetAddress @City nvarchar(30) = NULL AS SELECT * FROM Person WHERE City = ISNULL(@City,City) -- try as ISNULL(
@City, ‘ali’
) GO
Multiple Parameters
Setting up multiple parameters is very easy to do. You just need to list each parameter and the data type separated by a comma as shown below.
USE dbmsLab GO CREATE PROCEDURE Proc_Persons_GetAddress @City nvarchar(30) = NULL, @AddressLine1 nvarchar(60) = NULL AS SELECT * FROM Person WHERE City = ISNULL(@City,City) AND AddressLine1 LIKE '%' + ISNULL(@AddressLine1 ,AddressLine1) + '%' GO
To execute this you can do any of the following:
5
5
5
5

Reward Your Curiosity

Everything you want to read.
Anytime. Anywhere. Any device.
No Commitment. Cancel anytime.
576648e32a3d8b82ca71961b7a986505