SQL Server BasicsWhat is SQL Server database?What is RDBMS?What is Normalization?Why we use Denormalization?What_is_SQL?What is PL/SQL?Difference between SQL and PL/SQLDatabase TableOne to One RelationshipOne to Many RelationshipMany to Many RelationshipMany to One RelationshipString Data TypesNumber Data TypesDate Data TypesOther Data TypesCreate DatabaseDrop DatabaseCreating and Managing Users in SQL ServerCreate TableAlter TableDrop TableConstraints in SQL serverPrimary KeyForeign KeyUnique KeyCandidate KeyComposite KeyDifference between primary key and candidate keyPrimary key and foreign key relationshipSurrogate KeyCascading Referential Integrity ConstraintsSelf Referential Integrity ConstraintsInsert into statementInsert multiple recordsUpdate statementDelete statementTruncate statementDifference between Delete and TruncateAlias in SQL ServerSelect statementSelect DistinctSelect TopSelect IntoNull Functions(ISNULL(),NULLIF(),COALESCE())Sub QueryIdentity ColumnSequence objectDifference between sequence and identity columnSQL Server ClausesWHERE ClauseOrder By ClauseTop N ClauseGroup By ClauseHaving ClauseDifference between Where and HavingSQL Server OperatorsArithmetic OperatorsComparison OperatorsLogical OperatorsBitwise OperatorsAny OperatorsAll OperatorsUnion OperatorsUnion All OperatorsDifference between Union and Union AllIntersect OperatorExcept OperatorDifference between Except and IntersectJoinsInner JoinLeft JoinRight JoinFull JoinSelf JoinCross JoinViewsWhat are views?Create views using SSMSIndexed ViewsComplex ViewsCheck Option in ViewCheck Encryption in ViewSchema Binding Option in ViewRead-only ViewsUpdatable ViewsAdvantages and disadvantages of viewsCreate multiple views on one tableCan we implement index on views?Can we Perform Insert, update, delete operation on views?Stored Procedure and FunctionsWhat are Stored Procedures?Why we use stored procedures?Passing parameters to Stored procedureUser-Defined FunctionsDifference between UDF and Stored procedurePre-Defined Functions@@Indentity and Scope_IndentityNULLIF, ISNULL and COALESCE

How to Pass Parameters to Stored Procedures in SQL Server: A Comprehensive Guide

What Are Stored Procedure Parameters?

Parameters in stored procedures are variables that allow you to pass data into or out of the procedure. There are two main types of parameters:

  • Input Parameters: Used to pass values into the stored procedure.
  • Output Parameters: Used to return values from the stored procedure.

By using parameters, you can create dynamic and reusable stored procedures that adapt to different inputs and scenarios.

Creating a Stored Procedure with Parameters

To create a stored procedure with parameters, you define the parameters in the procedure’s declaration. Here’s an example:

Example: Stored Procedure with Input Parameter


CREATE PROCEDURE GetEmployeesByDepartment
@DepartmentID INT -- Input parameter
AS
BEGIN
SELECT EmployeeID, FirstName, LastName, Salary
FROM Employees
WHERE DepartmentID = @DepartmentID;
END
	

Explanation:

  • The stored procedure GetEmployeesByDepartment accepts one input parameter: @DepartmentID.
  • The SELECT statement retrieves employees who belong to the specified department.

Executing a Stored Procedure with Parameters

To execute a stored procedure and pass parameter values, you can use the EXEC statement. There are two ways to pass parameters:

  1. Named Parameters: Explicitly specify the parameter name and value.
  2. Positional Parameters: Pass values in the order of the parameters defined in the procedure.

Example 1: Using Named Parameters


EXEC GetEmployeesByDepartment @DepartmentID = 123;
	

Explanation:

  • The value 123 is passed to the @DepartmentID parameter using its name.

Example 2: Using Positional Parameters


EXEC GetEmployeesByDepartment 123;
	

Explanation:

  • The value 123 is passed as the first parameter, which corresponds to @DepartmentID based on its position.

Using Output Parameters

Output parameters allow you to return values from a stored procedure. Here’s an example:

Example: Stored Procedure with Output Parameter


CREATE PROCEDURE GetEmployeeCountByDepartment
@DepartmentID INT,          -- Input parameter
@EmployeeCount INT OUTPUT   -- Output parameter
AS
BEGIN
SELECT @EmployeeCount = COUNT(*)
FROM Employees
WHERE DepartmentID = @DepartmentID;
END
	

Explanation:

  • The stored procedure GetEmployeeCountByDepartment accepts an input parameter @DepartmentID and an output parameter @EmployeeCount.
  • The SELECT statement calculates the number of employees in the specified department and assigns the result to @EmployeeCount.

Executing the Stored Procedure with Output Parameter


DECLARE @Count INT;
EXEC GetEmployeeCountByDepartment @DepartmentID = 123, @EmployeeCount = @Count OUTPUT;
PRINT @Count; -- Displays the employee count
	

Explanation:

  • The @EmployeeCount parameter is marked as OUTPUT to return the result.
  • The result is stored in the variable @Count and displayed using PRINT.

Combining Input and Output Parameters

You can combine input and output parameters in a single stored procedure. Here’s an example:

Example: Stored Procedure with Input and Output Parameters


CREATE PROCEDURE GetEmployeeDetails
@EmployeeID INT,            -- Input parameter
@FirstName NVARCHAR(50) OUTPUT, -- Output parameter
@LastName NVARCHAR(50) OUTPUT   -- Output parameter
AS
BEGIN
SELECT @FirstName = FirstName, @LastName = LastName
FROM Employees
WHERE EmployeeID = @EmployeeID;
END
	

Executing the Stored Procedure


DECLARE @FirstName NVARCHAR(50), @LastName NVARCHAR(50);
EXEC GetEmployeeDetails @EmployeeID = 1, @FirstName = @FirstName OUTPUT, @LastName = @LastName OUTPUT;
PRINT @FirstName + ' ' + @LastName; -- Displays the employee's full name
	

Explanation:

  • The stored procedure retrieves the first and last name of an employee based on their EmployeeID.
  • The results are returned using output parameters and displayed.

Best Practices for Using Parameters in Stored Procedures

  • Use Descriptive Parameter Names: Choose meaningful names for parameters to improve readability.
  • Validate Input Parameters: Check for valid input values to avoid errors or unexpected behavior.
  • Use Output Parameters Sparingly: Prefer returning result sets over output parameters for better flexibility.
  • Document Your Stored Procedures: Include comments to explain the purpose of each parameter and the procedure.
  • Test Thoroughly: Test your stored procedures with different input values to ensure they work as expected.

FAQs

1. Can I pass multiple parameters to a stored procedure?

Yes, you can define multiple input and output parameters in a stored procedure.

2. What is the difference between input and output parameters?

Input parameters pass values into the stored procedure, while output parameters return values from the procedure.

3. Can I use default values for parameters?

Yes, you can specify default values for parameters. For example:


CREATE PROCEDURE GetEmployees
@DepartmentID INT = NULL -- Default value
AS
BEGIN
SELECT * FROM Employees
WHERE DepartmentID = @DepartmentID OR @DepartmentID IS NULL;
END
		

4. How do I handle NULL values in parameters?

Use conditional logic in your stored procedure to handle NULL values. For example:


IF @DepartmentID IS NULL
BEGIN
-- Handle NULL case
END
		

5. Can I return multiple result sets from a stored procedure?

Yes, you can include multiple SELECT statements in a stored procedure to return multiple result sets.

Conclusion

Passing parameters to stored procedures in SQL Server is a fundamental skill that enhances the flexibility and reusability of your database code. By using input and output parameters effectively, you can create dynamic and powerful stored procedures that adapt to various scenarios.

With the examples and best practices provided in this guide, you’re now equipped to work with parameters in stored procedures confidently. Happy coding!

Final Tip

If your page was unindexed by Google, it might be due to duplicate or thin content. By rewriting your article with unique, detailed, and human-friendly explanations (like the one above), you can improve its chances of being indexed and ranked. Additionally, ensure your page has proper meta tags, a clear structure, and relevant internal/external links to boost its SEO performance.