SQL For Programmers – Stored Procedure Basics
Now that we’ve established a reason for using them, let’s continue with the basic syntax of the stored procedure. I think you’ll find that it is not that dissimilar to writing a procedure in any other language. Although, as we move on, I think you’ll find that the syntax we have to use to get anything done is quite cryptic.
The first thing that makes any procedure a procedure is the ability to define the procedure name and define the parameters that can be passed. This is also true of stored procedures.
The basic structure of a stored procedure looks like:
CREATE PROCEDURE procedureName
(
/* Parameters go here */
)
AS
/* Body of the Procedure
goes here. */
If you later needed to change this procedure, you would use this syntax:
ALTER PROCEDURE procedureName ( /* Parameters go here */ ) AS /* Body of the Procedure goes here. */
If you don’t have any parameters to pass, you can leave out the parentheses like so:
CREATE PROCEDURE procedureName AS /* Body of the Procedure goes here. */
You can define parameters to your procedure using comma delimited lists of @ prefixed names. You can name them whatever you want. Also keep in mind that SQL is not case sensitive. When you define the variables, you will also need to specify the type and, optionally, the size of the variable.
So to pass in a string and an integer, you would pass in:
CREATE PROCEDURE procedureName
(
@StringVar as VARCHAR,
@IntVar as Int
)
AS
/* Body of the Procedure
goes here. */
If you wanted to limit the size of the string to 50 characters, you would use:
CREATE PROCEDURE procedureName ( @StringVar as VARCHAR(50), @IntVar as Int ) AS /* Body of the Procedure goes here. */
Then, if you wanted to use those variables as part of your where clause, you would use:
CREATE PROCEDURE procedureName ( @StringVar as VARCHAR(50), @IntVar as Int ) AS SELECT fieldOne, fieldTwo, etc FROM tableName WHERE stringField=@stringVar AND intField=@intVar
You can find a full list of datatype definitions at the Microsoft site:
http://msdn.microsoft.com/en-us/library/ms187752.aspx
By default, the parameters are input only. I’ve found that that is all I need. But you may need to return a value through a parameter for some reason. You can do that by defining the parameter as an OUTPUT parameter:
CREATE PROCEDURE procedureName
(
@StringVar as VARCHAR(50),
@IntVar as Int OUTPUT
)
AS
/* Code that does something
meaningful */
SELECT @IntVar = 20
Notice you have to assign the output parameter a value.
All stored procedures either return nothing or they return a set of rows. So a better way of writing the stored procedure so that it returns 20 is to use something like this:
CREATE PROCEDURE procedureName
(
@StringVar as VARCHAR(50),
@IntVar as Int OUTPUT
)
AS
/* Code that does something
meaningful */
SELECT 20 as intField
where intField could be any meaningful name that could be used as a column name.
Other post in SQL For Programmers
- SQL For Developers - 9 Reasons to bother - August 13th, 2008
- MSSQL CREATE and DROP Database - SQL for Programmers - August 20th, 2008
- MSSQL CREATE TABLE - SQL For Programmers - August 22nd, 2008
- SQL For Programmers - ALTERing the TABLE - September 1st, 2008
- SQL For Programmers - Finding a String - September 3rd, 2008
- SQL For Programmers - Finding IN a List - September 8th, 2008
- SQL For Programmers - Stored Procedures (Better than LINQ) - September 10th, 2008
- SQL For Programmers - Stored Procedure Basics - September 16th, 2008
- Basic SQL Commands - SQL For Programmers - September 18th, 2008
- SQL IF/WHILE Blocks - SQL For Programmers - September 30th, 2008
- SQL WHILE - SQL For Programmers - October 2nd, 2008
- Temporary Tables - SQL For Programmers - October 7th, 2008
- SQL CURSOR - SQL For Programmers - October 13th, 2008
- SQL CURSOR Performance - SQL For Programmers - October 22nd, 2008
- Random in SQL - SQL For Programmers - November 4th, 2008
- SQL - Filtering WHERE condition on two rows - November 26th, 2008
- SQL - Transactions - April 15th, 2009
- SQL For Programmers – New Question - July 6th, 2009
- SQL SELECT CASE Instead of IIF - October 20th, 2009
Other Related Items:
Microsoft SQL Server 2008 Management and AdministrationIf you need to deploy, manage, or secure Microsoft SQL Server 2008, this is the complete, fast-paced, task-based reference you... Read More >
Beginner's SQL Server 2000 T-SQL Programming on DVDLearn SQL Server 2000/TSQL Programming as you watch DVDs on your TV or laptop DVD player. This 2-disc set contains 7 lessons that provide you a revi... Read More >
If you're new here, you may want to subscribe to my RSS feed. Thanks for visiting!










[...] SQL For Programmers – Stored Procedure Basics – September 16th, 2008 [...]