SQL Server Stored Procedure Input Parameters

SQL Server Stored Procedure Input Parameters

In this article, I am going to discuss the SQL Server Stored Procedure Input Parameters with examples. Please read our previous article before proceeding to this article where we discussed the basics of SQL Server Stored Procedure with some examples.

The parameters of a stored procedure in SQL Server can be of two types

  1. Input parameters
  2. Output parameters

The SQL Server Stored Procedure Input Parameters are used for bringing the values into the procedure for execution. On the other hand, the output parameters are used to carrying a value out of the procedure after execution.

When a parameter is declared with the output keyword, then we only require assigning a value to the parameter inside the procedure so that the procedure will send that value out at the end of procedure execution.

Example1: Create a procedure for adding two variables value
-- Create a Procedure
ALTER PROCEDURE spAddTwoNumbers(@no1 INT, @no2 INT)
AS
BEGIN
  DECLARE @Result INT
  SET @Result = @no1 + @no2
  PRINT 'RESULT IS: '+ CAST(@Result AS VARCHAR)
END
GO

-- Calling the procedure:
EXECUTE spAddTwoNumbers 10, 20

-- OR 
EXECUTE spAddTwoNumbers @no1=10, @no2=20

-- OR calling the procedure by declaring two variables as shown below
DECLARE @no1 INT, @no2 INt
SET @no1 = 10
SET @no2 = 20
EXECUTE spAddTwoNumbers @no1, @no2

Note: The Parameters and variables that we created must have an @ prefix in their name.

Let’s see some more examples for a better understanding of the SQL Server stored procedure Input Parameters.

We are going to work with the following Employee table.

SQL Server Stored Procedure Input Parameters

Please use the following SQL Script to create and populate the Employee table.

-- 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
Example2: Create Procedure to get the employee information by passing the employee gender and department id from the Employee table
CREATE PROCEDURE spGetEmployeesByGenderAndDepartment
  @Gender VARCHAR(20),
  @DeptID INT
AS
BEGIN
  SELECT Name, Gender, DOB, DeptID 
  FROM Employee
  WHERE Gender = @Gender AND DeptID = @DeptID
END
GO

In order to invoke the above SQL Server Stored Procedure, we need to pass the value for @Gender and @DeptID input parameters. If we don’t specify the name of the parameters we have to first pass the value for the @Gender parameter and then for the @DeptID parameter as shown below.

EXECUTE spGetEmployeesByGenderAndDepartment ‘Male’, 1

On the other hand, if we change the order, then we will get an error stating “Error converting data type varchar to int.” This is because the value of “Male” is passed into the @DeptID parameter. Since @DeptID is an integer, we get the type conversion error.

EXEC spGetEmployeesByGenderAndDepartment 1, ‘Male’

When we specify the names of the parameters when executing the stored procedure the order doesn’t matter. The example is given below.

EXEC spGetEmployeesByGenderAndDepartment @DeptID=1, @Gender=’Male’

NOTE: While we are calling the stored procedure passing the values in the order is very important. In the order they are declared in the procedure we need to pass the values in the same order. You can also pass the value in any order, but at that time you have to specify the variable name before the value to which you are passing the values.

Example3: Create a procedure to update the Employee details in the Employee table based on the Employee id.
-- Create a Procedure
CREATE PROCEDURE spUpdateEmployeeByID
(
  @ID INT, 
  @Name VARCHAR(50), 
  @Gender VARCHAR(50), @DOB DATETIME, 
  @DeptID INT
)
AS
BEGIN
  UPDATE	Employee SET 
      Name = @Name, 
      Gender = @Gender,
      DOB = @DOB, 
      DeptID = @DeptID
  WHERE	ID = @ID
END
GO

-- Executing the Procedure
-- If you are not specifying the Parameter Names then the order is important
EXECUTE spUpdateEmployeeByID 3, 'Palak', 'Female', '1994-06-17 10:53:27.060', 3

-- If you are specifying the Parameter Names then order is not mandatory
EXECUTE spUpdateEmployeeByID @ID =3, @Gender = 'Female', @DOB = '1994-06-17 10:53:27.060', @DeptID = 3, @Name = 'Palak'

In the next article, I will discuss the SQL Server Stored Procedure Output Parameters with some examples.

SUMMARY

In this article, I try to explain the SQL Server Stored Procedure Input Parameters step by step with some examples. I hope this article will help you with your need. I would like to have your feedback. Please post your feedback, question, or comments about this article.

Leave a Reply

Your email address will not be published. Required fields are marked *