SA0231 : The used parameter or variable has different case than its declaration |
![]() |
Inconsistent casing for parameters and variables in T-SQL code can lead to errors when deployed on case-sensitive SQL Server instances.

Case sensitivity in SQL Server can lead to issues where parameters and variables declared in one case are referenced in another. This becomes particularly problematic on case-sensitive SQL Server collations, where such mismatches can cause runtime errors.
For example:
1-- Problematic query with inconsistent case usage 2DECLARE @ExampleVar INT; 3SET @examplevar = 10;
In this example, the variable @ExampleVar is declared with a capital ‘E’ and ‘V’, but is referenced with lowercase ‘e’ and ‘v’. On a case-sensitive server, SQL Server treats @ExampleVar and @examplevar as different entities, leading to errors.
-
Code errors in production environments due to case sensitivity not caught during development.
-
Potential difficulties in debugging and maintaining code due to inconsistent naming conventions.

Ensure consistent usage of letter casing for variables and parameters in T-SQL code to prevent runtime errors on case-sensitive SQL Server instances.
Follow these steps to address the issue:
-
Identify all instances where the variable or parameter is declared using DECLARE statements within your T-SQL code.
-
Ensure that all references to each variable or parameter throughout your T-SQL code match the exact case used in the declaration. For example, if a variable is declared as @ExampleVar, all references should use @ExampleVar.
-
Review your code for any discrepancies in case, particularly in assignments and usage within queries and control structures.
For example:
1-- Corrected query with consistent case usage 2DECLARE @ExampleVar INT; 3SET @ExampleVar = 10;

The rule has a Batch scope and is applied only on the SQL script.

Rule has no parameters.

The rule does not need Analysis Context or SQL Connection.


Naming Rules, Code Smells

There is no additional info for this rule.

SQL
1create procedure SampleProcedure 2@EmployeeIDParm int, 3@EmployeeFirstnameParm nvarchar(50), 4@EmployeeLastnameParm nvarchar(50), 5@maxTotal int output 6as 7begin 8 declare @myCounter int; 9 declare @lastName nvarchar(30), 10 @firstName nvarchar(20), 11 @StateProvince nchar(2); 12 13 execute @MyCounter=sp_executesql 'select 1,2,3', 14 @params='', 15 @EmployeeIDParm=1, 16 @EmployeelastnameParm=@EmployeelastnameParm, 17 @EMPLOYEEIDPARM, 18 @maxTotal=@maxTotal output; 19 20 select @maxtotal, 21 @EmployeeLastNameParm, 22 @stateProvince, 23 @firstName, 24 @lastname; 25 26 return 1 27end |

SQL
1create procedure SampleProcedure 2@EmployeeIDParm int, 3@EmployeeFirstnameParm nvarchar(50), 4@EmployeeLastnameParm nvarchar(50), 5@maxTotal int output 6as 7begin 8 declare @myCounter int; 9 declare @lastName nvarchar(30), 10 @firstName nvarchar(20), 11 @StateProvince nchar(2); 12 13 execute @myCounter=sp_executesql 'select 1,2,3', 14 @params='', 15 @EmployeeIDParm=1, 16 @EmployeelastnameParm=@EmployeeLastnameParm, 17 @EmployeeIDParm, 18 @maxTotal=@maxTotal output; 19 20 select @maxTotal, 21 @EmployeeLastnameParm, 22 @StateProvince, 23 @firstName, 24 @lastName; 25 26 return 1 27end |

Message | Line | Column | |
---|---|---|---|
1 | SA0231 : The reference @EMPLOYEEIDPARM is used with different case than the declared parameter @EmployeeIDParm. | 17 | 12 |
2 | SA0231 : The reference @EmployeelastnameParm is used with different case than the declared parameter @EmployeeLastnameParm. | 16 | 34 |
3 | SA0231 : The reference @EmployeeLastNameParm is used with different case than the declared parameter @EmployeeLastnameParm. | 21 | 11 |
4 | SA0231 : The reference @maxtotal is used with different case than the declared parameter @maxTotal. | 20 | 11 |
5 | SA0231 : The reference @MyCounter is used with different case than the declared variable @myCounter. | 13 | 12 |
6 | SA0231 : The reference @lastname is used with different case than the declared variable @lastName. | 24 | 11 |
7 | SA0231 : The reference @stateProvince is used with different case than the declared variable @StateProvince. | 22 | 11 |
