SA0153 : Always specify parameter names when calling stored procedures |
![]() |
The topic describes the SA0153 analysis rule.

Always specify parameter names when calling stored procedures

The rule checks EXECUTE statements for stored procedure not being called with named parameters, but with parameters by position.

Specify parameter names when calling a stored procedure.

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.


Design Rules, Code Smells


SQL
1USE AdventureWorks2012; 2 3-- Passing values as constants. 4EXEC dbo.uspGetWhereUsedProductID 819, '20050225'; 5 6-- Passing values as variables. 7DECLARE @ProductID int, @CheckDate datetime; 8SET @ProductID = 819; 9SET @CheckDate = '20050225'; 10EXEC dbo.uspGetWhereUsedProductID @ProductID, @CheckDate; 11 12-- Try to use a function as a parameter value. 13-- This produces an error message. 14--EXEC dbo.uspGetWhereUsedProductID 819, GETDATE(); 15 16-- Passing the function value as a variable. 17 18SET @CheckDate = GETDATE(); 19EXEC dbo.uspGetWhereUsedProductID 819, @CheckDate; 20 21 22EXECUTE my_proc @second = 2, @first = 1, @third = 3; 23 24exec my_proc @second = 2, @first = 1, @third = 3; |

Message | Line | Column | |
---|---|---|---|
1 | SA0153 : Always specify parameter names when calling stored procedures. | 4 | 0 |
2 | SA0153 : Always specify parameter names when calling stored procedures. | 10 | 0 |
3 | SA0153 : Always specify parameter names when calling stored procedures. | 19 | 0 |
