Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
72 views

How To Create Stored Procedures

The document provides instructions on how to create and manage stored procedures in SQL Server. It describes how to create a basic stored procedure, execute a stored procedure, set permissions for a stored procedure, specify the execution context, improve performance by reducing overhead, and encrypt the stored procedure code.

Uploaded by

Joe Hill
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
72 views

How To Create Stored Procedures

The document provides instructions on how to create and manage stored procedures in SQL Server. It describes how to create a basic stored procedure, execute a stored procedure, set permissions for a stored procedure, specify the execution context, improve performance by reducing overhead, and encrypt the stored procedure code.

Uploaded by

Joe Hill
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

1.

2. Launch Microsoft SQL Server and click Connect


3. Open the WattsALoan1.sql file (Watts A Loan)
4. To create the database and its objects, right-click inside the document and click Execute
5. Close the Query window
6. In the Object Explorer, expand the Databases node and expand WattsALoan1
7. Right-click Database Diagrams -> New Database Diagram
8. When the message box comes up, read it and click Yes
9. Right-click Database Diagram and click New Database Diagram
10. Read the message and click Yes
11. In the dialog box, double-click each table and, when all tables have been added, click Close
12. Close the diagram
13. When asked whether you want to save it, click Yes
14. Set the name to dgmWattsALoan1
15. Click OK
16. In the Object Explorer, right-click WattsALoan1 and click New Query
17. To see a list of payments made on different loans, type the following:
18. SELECT ALL * FROM Loans.Payments;
GO
19. To see the result, on the main menu, click Query -> Execute
20. Click inside the top section of the Query window and press Ctrl + A

Creating a Stored Procedure


To create a stored procedure:

• In the Object Explorer, expand the database for which you want to create the stored procedure, expand its
Programmability node, right-click Stored Procedures, and click New Stored Procedure... A Query window with a skeleton
syntax would be displayed. You can then modify that code using the techniques we will learn in this lesson
• Open an empty Query window associated with the database for which you want to create the stored procedure and display
the Templates Explorer. In the Templates Explorer, expand the Stored Procedure node. Drag Create Stored Procedure and
drop it in the Query window
• Open an empty Query window associated with the database for which you want to create the stored procedure and enter
the necessary code
The simplest syntax to create a stored procedure in Transact-SQL is:

CREATE PROC/PROCEDURE [SchemaName.]ProcedureName


AS
Body of the Procedure
To create a stored procedure, start with the CREATE PROCEDURE expression. You can also useCREATE PROC. Both
expressions produce the same result. Like everything in your database, you must name your stored procedure:

• The name of a procedure can be any string that follows the rules we reviewed for naming the functions
• Refrain from starting the name of a stored procedure with sp_ because it could conflict with some of the stored procedures
that already ship with Microsoft SQL Server
When creating a stored procedure, you can precede its name by a schema name. After the name of the procedure, type
the AS keyword. The section, group of words, or group of lines after the AS keyword is the body of the stored procedure. It states
what you want the procedure to do or what you want it to produce. It is important to keep in mind that there are many other issues
related to creating a stored procedure but we will ignore them for now.

Probably the simplest procedure you can create would consist of selecting fields from a table. This is done with
the SELECT operator. It uses the techniques we reviewed for data selection. For example, to create a stored procedure that would
hold a list of students from a table named Students, you would create the procedure as follows:

Here is an example of creating a stored procedure:

CREATE PROCEDURE Registration.GetStudentIdentification


AS
BEGIN
SELECT FirstName, LastName, DateOfBirth, Gender
FROM Registration.Students
END
GO
Although you can use the * to select all fields of a table, instead, you should always create the list of columns, even if you plan to
use all columns of a table.

Besides SELECT operations, in a stored procedure, you can perform any of the database operations we have applied so far. These
include creating and maintaining records, etc.

Practical Learning: Creating a Stored Procedure


1. To start a stored procedure, type the following:
2. CREATE PROCEDURE Management.ShowInformation
3. AS
4. SELECT ALL * FROM Loans.Types;
5. SELECT ALL * FROM Accounts.Customers;
GO
6. To create the stored procedure, on the main menu, click Query -> Execute

Executing a Stored Procedure


After creating a stored procedure, you must store it as an object in your database. To do this visually, on the SQL Editor toolbar,
you can click the Execute button . If the code of the stored procedure is right, it would be created:
Also, a new node for its name would be added to the Stored Procedures section of the database.

To get the results of creating a stored procedure, you must execute it (in other words, to use a stored procedure, you must call it).
To execute a stored procedure, you use the EXECUTE keyword followed by the name of the procedure. Although there are some
other issues related to executing a stored procedure, for now, we will consider that the simplest syntax to call a procedure is:

EXEC/EXECUTE [SchemaName.]ProcedureName
If you have a stored procedure named GetStudentIdentification, to execute it, you would type:

EXECUTE GetStudentIdentification
You can also precede the name of the procedure with its schema. Here is an example:

EXECUTE Registration.GetStudentIdentification;
You can also precede the name of the schema with the name of the database. Here is an example:

EXECUTE rosh.Registration.GetStudentIdentification;
Practical Learning: Executing a Stored Procedure
1. Click inside the top section of the Query window and press Ctrl + A to select everything
2. To execute the stored procedure, type the following
3. EXECUTE Management.ShowInformation;
GO
4. To execute the stored procedure, right-click inside the top section of the Query window and click Execute
5. Click inside the top section of the Query window and press Ctrl + A

Stored Procedure and Permissions


Introduction
To visually manage the permissions of a stored procedure, in the Object Inspector, right-click it and click Properties. In the left
frame, click Permissions. In the right section of the dialog box, get a user name and view the available permissions in
the bottom section:
As you can see, a stored procedure does not have many permissions on its own. Still, permissions on stored procedures can get
complicated because of the interactions a stored procedure has with the objects it uses.

To start, a developer who has to create one ore more stored procedures must have the CREATE PROCEDURE permission on the
database that will own the procedure. Also, he or she must have theALTER permissions. You must also coordinate the permissions
of the user on the objects used by the stored procedure.

Executing On Behalf of an Account


If a user is lacking some permissions when executing a stored procedure, he cannot use the result(s) of that procedure. As an
alternative, when creating a certain stored procedure, you can specify the user account that will be used to execute the procedure.
To give this instruction, before the AS keyword permission, type WITH EXECEUTE AS followed by the user name that will be
used. The formula to follow is:

CREATE PROC/PROCEDURE [SchemaName.]ProcedureName


WITH EXECUTE AS Option
AS
Body of the Procedure
The options are:

• If you want your own account to be used, use WITH EXECUTE AS SELF. This is the default for a stored procedure. In
this case, your user name will be stored with the procedure and the databaseengine will call it when the sotred procedure is
executed.
• If you want the account of the user who is executing the procedure to be used, use WITH EXECUTE AS CALLER. In
this case, when the user starts executing the procedure, the database engine will check whether the user has the appropriate
permissions. If so, the stored procedure would execute. Otherwise, he will be denied.
• If you want the account of the owner of the database to be used, use WITH EXECUTE AS OWNER.
• If you want to specify the account that will be used when executing the schema, use WITH EXECUTE AS, followed by
the user name. Here is an example:
CREATE USER Patricia FOR LOGIN [Central\pkatts];
GO
CREATE PROCEDURE Registration.GetContactInformation
WITH EXECUTE AS N'Patricia'
AS
SET NOCOUNT ON
SELECT FirstName, LastName, ParentsNames
FROM Registration.Students;
GO
Managing Procedures
Introduction
When a stored procedure executes, the database engine must keep sending messages back and forth between the server and the
client. These relentless interactions create overhead on the processing and in most cases are not necessary. To avoid them, after the
AS keyword, add a SET NOCOUNT ON expression before starting the body of the stored procedure. The formula to follow is:

CREATE PROC/PROCEDURE [SchemaName.]ProcedureName


AS
SET NOCOUNT ON
Body of the Procedure
Here is an example:

CREATE PROCEDURE Registration.GetIdentification


AS
SET NOCOUNT ON
BEGIN
SELECT FirstName, LastName, DateOfBirth, Gender
FROM Registration.Students
END
GO
Although you can create and use a stored procedure without specifying a schema, it is recommended that you always use a schema.
In fact, you should always create your own schema in your database and create your stored procedure in it.

Encrypting the Code of a Stored Procedure


As mentioned already, when you create a stored procedure, it becomes an object in the Object Inspector and its code is available. If
you want to encrypt that code as it is stored in the database, add a WITH ENCRYPTION expression before the AS keyword. The
formula to follow is:

CREATE PROC/PROCEDURE [SchemaName.]ProcedureName


WITH ENCRYPTION
AS
Body of the Procedure
Here is an example:

CREATE PROCEDURE Registration.GetStudentIdentification4


WITH ENCRYPTION
AS
SET NOCOUNT ON
SELECT FirstName, LastName, DateOfBirth, Gender
FROM Registration.Students;
GO
Modifying a Stored Procedure
As a regular Microsoft SQL Server database object, you can modify a stored procedure without recreating it. To do this:

• In the Object Explorer, right-click the procedure and click Modify


• In the Object Explorer, right-click the procedure, position the mouse on Script Stored Procedure As -> ALTER To -> New
Query Editor Window
• Open an empty Query window associated with the database that contains the stored procedure. From the Templates
Explorer, expand Stored Procedure. Drag the Alter Stored Procedure node and drop it in the empty Query window
In each case, a skeleton code would be generated for you. You can then edit it to create a new version of your stored procedure.
After editing the code, you can execute the SQL statement to update the stored procedure.

In Transact-SQL, the basic formula to modify a stored procedure is:

ALTER PROCEDURE [SchemaName.]ProcedureName


AS
Body of Procedure
Recompiling a Stored Procedure
When you create a stored procedure, it considers the state of the database at that time. This includes the columns and records in the
tables, the primary keys, the foreign keys, etc. It is not unusual for a user of the database to change any of these details. After such
operations have occurred, the stored procedure may not be updated and may show previous details before the changes. One way
you can take care of the stored procedure is to ask the database engine to recompile the stored procedure.

To ask the database engine to check the stored procedure and recompile it the next time it is executed, when creating the procedure,
before the AS keyword, add a WITH RECOMPILE expression. The formula to follow is:

CREATE PROC/PROCEDURE [SchemaName.]ProcedureName


AS
WITH RECOMPILE
Body of the Procedure
Here is an example:

CREATE PROCEDURE Registration.GetStudentsByGender


WITH RECOMPILE
AS
SET NOCOUNT ON
SELECT FirstName, LastName, DateOfBirth, Gender
FROM Students
GO
Deleting a Stored Procedure
One of the characteristics of a stored procedure is that it is treated like an object in its own right. Therefore, after creating it, if you
don't need it anymore, you can get rid of it.

There are various types of stored procedures, some of which are considered temporary. Those types of procedures delete
themselves when not needed anymore, such as when the person who created the stored procedure disconnects from the database or
shuts down the computer. Otherwise, to delete a stored procedure, you can use either the Object Explorer or SQL. As mentioned
with tables, even if you create a stored procedure using the Object Explorer, you can delete it using SQL and vice-versa.

To delete a stored procedure in the Object Explorer, after expanding its database, its Programmability, and its Stored Procedure
nodes, right-click the stored procedure and click Delete. You can also click it in the Object Explorer to select it and then press
Delete. The Delete Object dialog box would come up to let you make a decision.

To delete a stored procedure in SQL, the syntax to use is:

DROP PROCEDURE [SchemaName.]ProcedureName


Of course, you should make sure you are in the right database and also that the ProcedureName exists.

Using Expressions and Functions


One of the advantages of using a stored procedure is that not only can it produce the same expression as we saw for data selection
but also it can store such an expression to be recalled any time without having to re-write it (the expression). Based on this, you can
create an expression that combines a first and a last name to produce and store a full name. Here is an example:

CREATE PROCEDURE Registration.GetStudentIdentification


AS
BEGIN
SET NOCOUNT ON
SELECT FullName = FirstName + N' ' + LastName,
DateOfBirth, Gender
FROM Registration.Students
END
GO
A stored procedure can also call a function in its body. To do this, follow the same rules we reviewed forcalling functions during
data selection. Here is an example of a stored procedure that calls a function:

CREATE PROCEDURE Registration.GetStudentsAges


AS
BEGIN
SET NOCOUNT ON
SELECT FullName = FirstName + N' ' + LastName,
DATEDIFF(year, DateOfBirth, GETDATE()) AS Age,
Gender
FROM Registration.Students
END
GO
Here is an example of executing the stored procedure:

EXEC rosh.Registration.GetStudentsAges;
GO
Arguments and Parameters
Introduction
All of the stored procedures we have created and used so far assumed that the values they needed were already in a table of the
database. In some cases, you may need to create a stored procedure that involves values that are not part of the database. On such a
scenario, for the stored procedure to carry its assignment, you would supply it with one or more values.

An external value that is provided to a stored procedure is called a parameter. When you create a stored procedure, you must also
create the parameter if you judge it necessary. When a procedure's creation is equipped with a parameter, it is said that the stored
procedure takes an argument. A stored procedure can also take more than one argument.

When you execute a stored procedure that takes one or more arguments, you must provide a value for each argument. In this case,
you are said to pass a value for the argument. There are cases when you don't have to provide an argument.

Passing Arguments
To create a stored procedure that takes an argument, type the formula CREATE PROCEDURE orCREATE PROC followed by
the name of the procedure, then type the name of the argument starting with @. The parameter is created like a column of a table.
That is, a parameter must have a name, a data type and an optional length. Here is the syntax you would use:

CREATE PROC/PROCEDURE [SchemaName.]ProcedureName


@ParameterName DataType
AS
Body of the Procedure
When implementing the stored procedure, in the body of the procedure, you can define what you want to do with the parameter(s).
One way you can use a parameter is to run a query whose statement the user would provide. For example, imagine you want to
create a stored procedure that, whenever executed, would be supplied with a gender, then it would display the list of students of that
gender. Since you want the user to specify the gender of students to display, you can create a stored procedure that receives the
gender. Here is an example:

CREATE PROCEDURE Registration.GetListOfStudentsByGender


@Gdr NVARCHAR(12)
AS
SELECT FirstName, LastName,
DateOfBirth, HomePhone, Gender
FROM Students
WHERE Gender = @Gdr
Practical Learning: Creating a Stored Procedure
1. To pass arguments to a stored procedure, type the following in the window:
2. USE WattsALoan1;
3. GO
4.
5. CREATE PROCEDURE Loans.SpecifyCurrentBalance
6. @PmtDate date,
7. @EmplID int,
8. @LaID int,
9. @PmtAmt money
10. AS
11. BEGIN
12. -- Get the amount that was lent to the customer
13. DECLARE @AmountOfLoan money;
14. SET @AmountOfLoan = (SELECT las.FutureValue
15. FROM Loans.Allocations las
16. WHERE (las.AllocationID = @LaID));
17.
18. -- If the customer had already made at least one payment,
19. -- get the current balance of the customer's account
20. DECLARE @CurrentBalance money;
21. SET @CurrentBalance = (SELECT MIN(pay.Balance)
22. FROM Loans.Payments pay
23. WHERE (pay.AllocationID = @LaID));
24.
25. -- If the customer has never made a payment (yet),
26. -- to specify the balance, subtract the current payment
27. -- from the original amount of the loan
28. IF @CurrentBalance IS NULL
29. BEGIN
30. INSERT INTO Loans.Payments(PaymentDate, EmployeeID,
31. AllocationID, PaymentAmount, Balance)
32. VALUES(@PmtDate, @EmplID, @LaID, @PmtAmt,
33. @AmountOfLoan - @PmtAmt);
34. END
35. -- If the customer had already at least one payment,
36. -- subtract the current payment from the previous balance
37. ELSE
38. BEGIN
39. INSERT INTO Loans.Payments(PaymentDate, EmployeeID,
40. AllocationID, PaymentAmount, Balance)
41. VALUES(@PmtDate, @EmplID, @LaID,
42. @PmtAmt, @CurrentBalance - @PmtAmt);
43. END
44. END
GO
45. To create the stored procedure, on the main, click Query -> Execute
46. Click inside the top section of the Query window and press Ctrl + A

Executing an Argumentative Stored Procedure


As mentioned already, when executing a stored procedure that takes a parameter, make sure you provide a value for the parameter. The syntax used is:

EXEC/EXECUTE [SchemaName.]ProcedureName ParameterValue


If the parameter is Boolean or numeric, make sure you provide the value as 0 or for a Boolean value or another number for the numeric type. If the parameter is a
character or a string, type its value in single-quotes. Here is an example:

EXEC rosh.Registration.GetListOfStudentsByGender N'Male';


Here is an example of executing it:
Notice that we could/should have omitted the Gender column in the statement since it would be implied.

Another type of stored procedure can be made to take more than one parameter. In this case, create the parameters in the section before the AS keyword, separated by
(a) comma(s). The syntax you would use is:

CREATE PROC/PROCEDURE [SchemaName.]ProcedureName


@ParameterName1 DataType, @ParameterName2 DataType, @ParameterName_n DataType
AS
Body of the Procedure
Here is an example:

USE ROSH;
GO
CREATE PROCEDURE Registration.IdentifyStudentsByState
@Gdr nvarchar(20),
@StateOrProvince char(2)
AS
BEGIN
SELECT FullName = LastName + ', N' + FirstName,
DATEDIFF(year, DateOfBirth, GETDATE()) AS Age,
Gender
FROM Registration.Students
WHERE (Gender = @Gdr) AND (State = @StateOrProvince);
END
GO
When calling a stored procedure that takes more than one parameter, you must still provide a value for each parameter but you have two alternatives. The simplest
technique consists of providing a value for each parameter in the exact order they appear in the stored procedure. Here is an example:

USE ROSH;
GO
EXEC rosh.Registration.IdentifyStudentsByState N'Female', N'MD';
GO
This would produce:
Alternatively, you can provide the value for each parameter in the order of your choice. Consider the following stored procedure that takes 3 arguments:

USE ROSH;
GO
CREATE PROCEDURE Registration.IdentifySomeStudents
@Gdr nvarchar(20),
@StateOrProvince nchar(2),
@HomeStatus bit
AS
BEGIN
SET NOCOUNT ON
SELECT FullName = LastName + N', ' + FirstName,
DATEDIFF(year, DateOfBirth, GETDATE()) AS Age,
Gender
FROM Registration.Students
WHERE (Gender = @Gdr) AND
(State = @StateOrProvince) AND
(SingleParentHome = @HomeStatus);
END
GO
When calling this type of procedure, you can type the name of each parameter and assign it the corresponding value. Here is an example:

USE ROSH;
GO
EXEC Registration.IdentifySomeStudents @HomeStatus=1, @StateOrProvince=N'MD', @Gdr=N'Female';
GO
Here is an example of executing the procedure:
Practical Learning: Executing an Argumentative Procedure
1. To execute the stored procedure, type the following:
2. USE WattsALoan1;
3. GO
4. EXECUTE Loans.SpecifyCurrentBalance N'03/25/2004', 2, 1, 249.08;
5. GO
6. EXECUTE Loans.SpecifyCurrentBalance N'01/30/2006', 2, 5, 611.93;
7. GO
8. EXECUTE Loans.SpecifyCurrentBalance N'04/20/2004', 1, 1, 249.08;
9. GO
10. EXECUTE Loans.SpecifyCurrentBalance N'10/28/2006', 2, 4, 134.38;
GO
11. To execute, press F5
12. To see a list of payments made on different loans, type the following:
13. SELECT ALL * FROM Loans.Payments;
GO
14. To see the result, on the main menu, click Query -> Execute
15. Click inside the top section of the Query window and press Ctrl + A

Default Arguments
Imagine you create a database for a department store and a table that holds the list of items sold in the store:

CREATE TABLE Inventory.Categories


(
CategoryID int identity(1, 1) primary key,
Category nvarchar(20) not null
);
GO
INSERT INTO Inventory.Categories(Category)
VALUES(N'Men'), (N'Women'), (N'Boys'), (N'Girls'),(N'Miscellaneous');
GO
CREATE TABLE Inventory.StoreItems
(
ItemNumber nvarchar(10) primary key,
CategoryID int foreign key
references Inventory.Categories(CategoryID),
ItemName nvarchar(60) not null,
Size nvarchar(20),
UnitPrice money
);
INSERT INTO Inventory.StoreItems
VALUES(N'264850', 2, N'Long-Sleeve Jersey Dress', N'Petite', 39.95),
(N'930405', 4, N'Solid Crewneck Tee', N'Medium', 12.95),
(N'293004', 1, N'Cotton Comfort Open Bottom Pant', N'XLarge', 17.85),
(N'924515', 1, N'Hooded Full-Zip Sweatshirt', N'S', 69.95),
(N'405945', 3, N'Plaid Pinpoint Dress Shirt', N'22 35-36', 35.85),
(N'294936', 2, N'Cool-Dry Soft Cup Bra', N'36D', 15.55),
(N'294545', 2, N'Ladies Hooded Sweatshirt', N'Medium', 45.75),
(N'820465', 2, N'Cotton Knit Blazer', N'M', 295.95),
(N'294694', 2, N'Denim Blazer - Natural Brown', N'Large', 75.85),
(N'924094', 3, N'Texture-Striped Pleated Dress Pants', N'44x30', 32.85),
(N'359405', 3, N'Iron-Free Pleated Khaki Pants', N'32x32', 39.95),
(N'192004', 3, N'Sunglasses', NULL, 15.85);
GO
ItemNumber ItemCategoryID ItemName ItemSize UnitPrice
264850 2 Long-Sleeve Jersey Dress Petite 39.95
930405 4 Solid Crewneck Tee Medium 12.95
293004 1 Cotton Comfort Open Bottom Pant XLarge 17.85
924515 1 Hooded Full-Zip Sweatshirt S 69.95
405945 3 Plaid Pinpoint Dress Shirt 22 35-36 35.85
294936 2 Cool-Dry Soft Cup Bra 36D 15.55
294545 2 Ladies Hooded Sweatshirt Medium 45.75
820465 2 Cotton Knit Blazer M 295.95
294694 2 Denim Blazer - Natural Brown Large 75.85
924094 3 Texture-Striped Pleated Dress Pants 44x30 32.85
359405 3 Iron-Free Pleated Khaki Pants 32x32 39.95
192004 3 Sunglasses 15.85
Imagine you want to create a mechanism of calculating the price of an item after a discount has been applied to it. Such a procedure can be created as follows:

CREATE PROCEDURE Inventory. CalculateNetPrice


@discount Decimal
AS
SET NOCOUNT ON
SELECT ItemName, UnitPrice - (UnitPrice * @discount / 100)
FROM StoreItems;
GO
This can be executed as follows:
If you are planning to create a stored procedure that takes an argument and know that the argument will likely have the same value most of the time, you can provide
that value as parameter but leave a room for other values of that argument. A value given to an argument is referred to as default. What this implies is that, when the
user calls that stored procedure, if the user doesn't provide a value for the argument, the default value would be used.

To create a stored procedure that takes an argument that carries a default value, after declaring the value, on its right side, type = followed by the desired value. Here is
an example applied to the above database:

CREATE PROCEDURE Inventory.CalculateDiscountedPrice


@discount decimal = 10.00
AS
SET NOCOUNT ON
SELECT ItemName, UnitPrice - (UnitPrice * @discount / 100)
FROM StoreItems;
GO
When executing a stored procedure that takes a default argument, you don't have to provide a value for the argument if the default value suits you. Based on this, the
above stored procedure can be called as follows:

If the default value doesn't apply to your current calculation, you can provide a value for the argument. Here is an example:
On the other hand, you can ask the database engine to get the default value. To do this, pass the argument as DEFAULT. Here is an example:
You can create a stored procedure that takes more than one argument with default values. To provide a default value for each argument, after declaring it, type the
desired value to its right side. Here is an example of a stored procedure that takes two arguments, each with a default value:

CREATE PROCEDURE Inventory.CalculateSalePrice


@Discount decimal = 20.00,
@TaxRate decimal = 7.75
AS
SET NOCOUNT ON
SELECT ItemName As [Item Description],
UnitPrice As [Marked Price],
UnitPrice * @Discount / 100 As [Discount Amt],
UnitPrice - (UnitPrice * @Discount / 100) As [After Discount],
UnitPrice * @TaxRate / 100 As [Tax Amount],
(UnitPrice * @TaxRate / 100) + UnitPrice -
(UnitPrice * @Discount / 100) + (@TaxRate / 100) As [Net Price]
FROM StoreItems;
GO
Here is an example of executing the procedure:

When calling a stored procedure that takes more than one argument and all arguments have default values, you don't need to provide a value for each argument, you
can provide a value for only one or some of the arguments. The above procedure can be called with one argument as follows:

EXEC CalculateSalePrice 55.00


In this case, the other argument(s) would use their default value.

We saw that, when calling a stored procedure that takes more than one argument, you didn't have to provide the values of the arguments in the exact order they
appeared in the procedure, you just had to type the name of each argument and assign it the desired value. In the same way, if a stored procedure takes more than one
argument and some of the arguments have default values, when calling it, you can provide the values in the order of your choice, by typing the name of each argument
and assigning it the desired value. Based on this, the above stored procedure can be called with only the value of the second argument as follows:

EXEC CalculateSalePrice @TaxRate = 8.55


In this case, the first argument would use its default value.

You might also like